按父元素开头的类查找元素

时间:2017-06-28 12:54:25

标签: javascript jquery

使用类似的设置

var o = $('
    <div class="a a-1">
        <div class="b"></div>
        <div class="c">         
            <div class="a a-2"></div>
        </div>
        <div class="a a-3"></div>
    </div>
');

如何查找所有课程“a”元素?

当我尝试o.find('.a')时,返回元素.a-2和.a-3而没有父类(.a-1)。所以我也尝试添加一个包装器'<div><div class="a a-1">...</div></div>',但由于使用了ajax,它会混淆前端渲染。

有什么想法吗?

附录: 有人建议与jQuery.find() ignores root node相似。没有问题,除了问题需要捕获一个元素。在这种情况下,.filter()就足够了。问题是“如何抓住一个......”在这种情况下,我需要所有这些。

4 个答案:

答案 0 :(得分:2)

对于jQuery 1.8及更高版本,您可以使用.addBack()

o.find(".a").addBack(".a")

在jQuery 1.8之前,使用.andSelf()(现已弃用):

o.find(".a").andSelf(".a")

答案 1 :(得分:1)

使用.andSelf() &lt;&lt; jq 1.8 .addBack() &gt;&gt;对于jq 1.8 它还包含当前目标节点:

var o = $('<div class="a a-1"> <div class="b"></div><div class="c"><div class="a a-2"></div></div> <div class="a a-3"></div></div>');

console.log("number of element with andSelf .a :"+ o.find(".a").andSelf().length);
console.log("number of element with addBack .a :"+ o.find(".a").addBack().length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 2 :(得分:1)

查找元素集内部,以便您可以:

var o = $('
<div class="a a-1">
    <div class="b"></div>
    <div class="c">         
        <div class="a a-2"></div>
    </div>
    <div class="a a-3"></div>
</div>
');

然后:

o = o.appendTo($('<div></div>'));

然后:

o.find('.a')...

答案 3 :(得分:1)

你可以在这里找到答案:

https://stackoverflow.com/a/5332377/6199906(在此复制..)

  

这是一个 .find2(),它会找到根元素和子元素:

$.fn.find2 = function(selector) {
  return this.filter(selector).add(this.find(selector));
};
     

有了这个,你可以这样做:

var html = '<div class="one"><div class="one"></div></div>';
var el = html.find2(".one"); // will match both divs
     

以下是有关它的更多信息:   http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/