jQuery:包含x的最高级别元素

ajb*_*ven 7 jquery jquery-selectors

我正在寻找一种方法来选择包含某个元素的元素,然后过滤结果以获得最高级别.很难解释,但通过一个例子变得更容易:

<div id="one">
    <div id="two">
        <div id="three" class="find-me"></div>
    </div>
</div>
<div id="four">
    <div id="five" class="find-me"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望我的集合包含#one和#four.如果我尝试做这样的事情:

var elements = $('div').has('.find-me');
Run Code Online (Sandbox Code Playgroud)

我得到了元素#one,#two和#four.

注意:$('div')在这种情况下,"最高级别"与第一个选择器中最顶层的元素相关.

Mo *_*our 6

那么什么highest level是定义,有点模棱两可,因为在实践中,如果.find-me你的页面中有任何一个,那么最高级别的父级将是html标记!这没用.

通过更具体地定义您的问题,您可以为此提出更清晰的定义highest-definition,例如,the farthest div parent等等.并且为了遍历您可以使用的元素的父母.parents().closest()方法.

var farthestDiv = $(".find-me").parents("div").last();
Run Code Online (Sandbox Code Playgroud)

很明显,如果你有多个出现,find-me你需要在一个.each()循环中运行它.

在这里看一个例子:http://jsfiddle.net/GsQDb/3/