使用类似的设置
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()
就足够了。问题是“如何抓住一个......”在这种情况下,我需要所有这些。
答案 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/