请考虑以下代码段作为示例:
<div class="bar foo">
</div>
<div class="bar">
<div class="foo"></div>
</div>
给定var $set=$('.bar');
我需要选择foo
类的两个节点。实现这一目标的正确方法是什么?考虑addBack()
需要选择器,这里我们需要使用$set
jQuery对象,$set.find('.foo')
不选择第一个节点。
答案 0 :(得分:1)
使用它:
var $set = $(".bar").filters(function () {
var $this = $(this);
if($this.is(".foo") || $this.find(" > .foo").length !== 0){
return true;
} else{
return false;
}
});
答案 1 :(得分:1)
测试一下:
var $newSet = $set.filter(".foo").add($set.has(".foo"));
答案 2 :(得分:0)
这是实现目标的一种方式:
var set = $('.bar');
var foos = [];
for (var i = 0; i < set.length; i++) {
if ($(set[i]).hasClass('foo')) {
foos.push(set[i]);
}
}
if (set.find('.foo').length !== 0) {
foos.push(set.find('.foo')[0]);
}
console.log(foos);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="bar foo"></div>
<div class="bar">
<div class="foo"></div>
</div>
&#13;
for
循环检查用jQuery&#39; s $('.bar')
选取的所有元素,并检查它们是否也有foo
类。如果是这样,它会将它们附加到数组中。 if
检查set
中选取的任何元素是否包含foo
类的子,并添加它们。
这会创建一个数组,其中包含具有foo
类的两个DIV,同时排除仅包含bar
的DIV。
希望这会有所帮助:)
答案 3 :(得分:-1)
您可以使用addBack()功能
var $set=$('.bar');
console.log($set.find(".foo").addBack(".foo"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="bar foo">
</div>
<div class="bar">
<div class="foo"></div>
</div>