jQuery在一组选择器中搜索特定元素,如果找不到,则添加它
我需要在一组“container”div中搜索类“a2”。如果发现了,什么也不做;如果缺少,请添加它 原始代码:jQuery在一组选择器中搜索特定元素,如果找不到,则添加它,jquery,loops,Jquery,Loops,我需要在一组“container”div中搜索类“a2”。如果发现了,什么也不做;如果缺少,请添加它 原始代码: <div class="container"> <div class="a1"> <span class="Label">Status:</span> <span class="Text">Active</span> </div> <div class="a2">
<div class="container">
<div class="a1">
<span class="Label">Status:</span>
<span class="Text">Active</span>
</div>
<div class="a2">
<span class="Label">Description:</span>
<span class="Text">2</span>
</div>
</div>
</br>
</br>
<div class="container">
<div class="a1">
<span class="Label">Status:</span>
<span class="Text">Active</span>
</div>
</div>
</br>
</br>
<div class="container">
<div class="a1">
<span class="Label">Status:</span>
<span class="Text">Active</span>
</div>
</div>
地位:
活跃的
说明:
2.
地位:
活跃的
地位:
活跃的
这是我的剧本:
$('div.container').each(function(){
if($(this).children('.a2').length == 0){
$('<div class="a2"><span class="Label">Description:</span><span class="Text">0</span></div>').insertAfter('div.a1');
return false;
}
});
$('div.container')。每个(函数(){
if($(this).children('.a2').length==0){
$('Description:0')。后面插入('div.a1');
返回false;
}
});
看这里
问题是脚本在第一个“容器”中插入了“a2”div,这是不需要的。有人能帮我找出我做错了什么吗
.insertAfter('div.a1');
在每个div.a1
元素之后插入元素。您需要将其附加到当前的div.container
:
.appendTo(this);
另外,不要返回false
。它将停止整个循环。if
已经保护是否添加。$('div.container').filter(函数(){
$('div.container').filter(function(){
return $('.a2', this).length === 0;
}).append('<div class="a2"><span class="Label">Description:</span><span class="Text">0</span></div>');
返回$('.a2',this).length==0;
}).append('Description:0');
或:
$('div.container')。非('has('div.a2'))
.append('Description:0');
您可以使用
not
方法和:has
选择器来过滤容器,以便只包含那些没有a2
元素的容器:
$('div.container').not(':has(> .a2)').append(
$('<div class="a2"><span class="Label">Description:</span><span class="Text">0</span></div>')
);
$('div.container')。不是(':has(>.a2')。追加(
$(“说明:0”)
);
也可以使用:not(:has(.a2))
@pimvdb是的,我通常使用过滤器
方法来过滤元素。非常感谢您的解释,我现在理解得更好了。
$('div.container').not(':has(> .a2)').append(
$('<div class="a2"><span class="Label">Description:</span><span class="Text">0</span></div>')
);