Javascript 按以父元素开头的类查找元素
像这样的设置Javascript 按以父元素开头的类查找元素,javascript,jquery,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>
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>
');
var o=$('
');
如何查找所有类“a
”元素
当我尝试o.find('.a')
时,返回的元素.a-2和.a-3没有父类(.a-1)。因此,我还尝试添加了一个包装器“…”
,但由于我使用的是ajax,它会扰乱前端渲染
有什么想法吗
增编:
有人建议与他相似。除了需要捕获一个元素的问题之外,没有问题。在这种情况下,.filter()
就足够了。问题是“如何获取一个…”在这种情况下,我需要所有这些节点。对于jq 1.8使用>,它还包括当前的目标节点:
var o=$('');
log(“带有andSelf.a:+o.find(“.a”).andSelf()长度的元素数);
log(“带有addBack.a:+o.find(“.a”).addBack().length的元素数)代码>
对于jQuery 1.8及更高版本,您可以使用
在jQuery 1.8之前,请使用和self()
(现在已弃用):
“查找”在元素集中查找,因此您可以执行以下操作:
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>
');
你可以在这里找到答案:
(复制到这里)
下面是一个.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
var html='';
var el=html.find2(“.one”);//将匹配两个div
以下是关于它的更多信息:
.find()
在子节点中搜索,不包括从中发出查询的当前节点将此添加到您的代码中o.find('.a').andSelf('.a')
此操作的可能重复项。但是由于我截取了ajax,这会把输出搞得一团糟,因为不同类型的输出正在通过。。。我认为这就是为什么要使用var o=…
的原因,但是如果您想使用它,可以在呈现Ajax数据的DOM元素中附加它,就像下面的$(element).append(o.html())代码>,这样我们添加的容器div将不会被呈现。它将包括self对象,即使它没有您的类。在andself中指定刚尝试过代码的类,.andself()在jQuery v3.2中不起作用是的,很抱歉,在他们的文档中,它在3.0中被弃用,因此,我已经更新了两个版本的答案:)thnxCorrect。现在我对你的回答和评论投赞成票。谢谢。thnks:),也请不要添加指向其他答案的答案。当你有更多的代表时,你可以将文章标记为重复的,现在,只是不要回答Liam是对的。而且,你是对的。刚刚尝试了你的代码o.filter('.a')。add(o.find('.a'))
它可以工作。缺点是它比人们所接受的要长一点,并且作为一种功能呈现,在本例中,它是一种过度杀伤力。
o = o.appendTo($('<div></div>'));
o.find('.a')...
$.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