Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery在一组选择器中搜索特定元素,如果找不到,则添加它_Jquery_Loops - Fatal编程技术网

jQuery在一组选择器中搜索特定元素,如果找不到,则添加它

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">

我需要在一组“container”div中搜索类“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>')
);