[英]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
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.