【问题标题】:Closest previous element with certain ID (with prev())?具有特定 ID 的最近的前一个元素(使用 prev())?
【发布时间】:2010-03-23 14:02:42
【问题描述】:

我有一个很大的 div,里面有很多更小的 div。说,

    <div id="parent">
 <div id="child1">
 </div>
 <div id="child1">
 </div>
 <div id="child2">
 </div>
 <div id="child1">
 </div>
 <div id="child1">
 </div>
</div>

如果我目前在最后一个“child1”,我如何使用 prev() 到达最顶层的 child1?对我来说,当它到达“child2”时它会中断。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    首先,您的 HTML 标记无效。文档中不应有多个具有相同 ID 的元素。

    阅读Element identifiers: the id and class attributes

    id:

    此属性为 元素。此名称在 文件。

    类:

    此属性分配一个类名或 一个元素的一组类名。任何 元素的数量可以分配给 相同的类名或名称。多 类名必须用白色分隔 空格字符。

    您可以使用parent:firstchild 来获取当前父元素中的第一个元素。

    如果您当前位于元素“父”的任何子元素中,则可以使用类似的东西

    $(this).parent().find("div:first-child");
    

    【讨论】:

    • 好的,实际上我正在使用类,但失败了,所以我使用了 ID。这也失败了。
    • 谢谢。实际上,通过到达最顶层的“child1”,我的意思是首先遍历“child1”类的所有先前元素。不是直接的。
    【解决方案2】:

    我想你想要这个:

    $(this).prevAll('.child1').eq(0);
    

    【讨论】:

    • 嘿谢谢!!这正是我似乎正在寻找的! =)
    【解决方案3】:
     $(this).closest('.parent').find('.child1:first')
    

    我改成了类,因为你真的应该在页面中只拥有任何给定 ID 的一个元素

    【讨论】:

    • 谢谢。这实际上解决了我描述的问题,但在 div 中有很多子类。我想“跳到给定类的最近的上一个元素”。类似于 $(this).prev('.child1') 但我希望它跳过 'child2' 类。
    猜你喜欢
    • 1970-01-01
    • 2014-04-02
    • 2011-10-24
    • 2019-11-16
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    相关资源
    最近更新 更多