简体   繁体   English

使用jQuery选择具有至少2个子元素的所有元素

[英]Using jQuery to select all elements that have at least 2 children

I need to select all the .sortable <ul> elements, but I only need those that have 2 or more children ( <li> elements). 我需要选择所有.sortable <ul>元素,但是我只需要具有2个或更多子代的元素( <li>元素)。

Is there some way for jQuery to just select <ul> elements that have at least 2 <li> children? jQuery是否有某种方法可以选择具有至少2个<li>子元素的<ul>元素? Thanks! 谢谢!

This code also would select the first <ul> in this example, which should be actually ignored (because it only has 1 child). 在此示例中,此代码还将选择第一个<ul> ,实际上应将其忽略(因为它只有一个孩子)。

 $('ul.sortable:has(li)').sortable({ axis: 'y', placeholder: 'list-group-item holder list-group-item-warning' }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul class="list list-group mb-4 sortable"> <li class="list-group-item" data-id="2">Amarillo</li> </ul> <ul class="list list-group mb-4 sortable"> <li class="list-group-item" data-id="1">Azul</li> <li class="list-group-item" data-id="3">Rojo</li> </ul> <ul class="list list-group mb-4 sortable"> <li class="list-group-item" data-id="9">Verde</li> <li class="list-group-item" data-id="8">Cafe</li> <li class="list-group-item" data-id="6">Naranja</li> <li class="list-group-item" data-id="7">Rosado</li> </ul> 

Use filter() 使用filter()

$('ul.sortable').filter(function(){
   return $(this).children().length > 1;
}).sortable({
    axis: 'y',
    placeholder: 'list-group-item holder list-group-item-warning'
});

Use .filter with a callback function: .filter与回调函数一起使用:

 const uls = $('ul.sortable:has(li)') .filter(function() { return $(this).children('li').length >= 2; }); console.log(uls.length); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul class="list list-group mb-4 sortable"> <li class="list-group-item" data-id="2">Amarillo</li> </ul> <ul class="list list-group mb-4 sortable"> <li class="list-group-item" data-id="1">Azul</li> <li class="list-group-item" data-id="3">Rojo</li> </ul> <ul class="list list-group mb-4 sortable"> <li class="list-group-item" data-id="9">Verde</li> <li class="list-group-item" data-id="8">Cafe</li> <li class="list-group-item" data-id="6">Naranja</li> <li class="list-group-item" data-id="7">Rosado</li> </ul> 

您可以这样尝试:

$('.sortable li+li').parent()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM