Использование jQuery для выбора всех элементов, у которых есть как минимум 2 дочерних элемента - PullRequest
1 голос
/ 30 марта 2019

Мне нужно выбрать все элементы .sortable <ul>, но мне нужны только те, которые имеют 2 или более дочерних элементов (<li> элементы).

Есть ли способ для jQuery просто выбрать <ul> элементов, которые имеют по крайней мере 2 <li> дочерних элементов? Спасибо!

Этот код также выберет первый <ul> в этом примере, который должен фактически игнорироваться (потому что у него только 1 дочерний элемент).

$('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>

Ответы [ 3 ]

1 голос
/ 30 марта 2019

Использование filter()

$('ul.sortable').filter(function(){
   return $(this).children().length > 1;
}).sortable({
    axis: 'y',
    placeholder: 'list-group-item holder list-group-item-warning'
});
0 голосов
/ 30 марта 2019

Вы можете попробовать вот так:

$('.sortable li+li').parent()
0 голосов
/ 30 марта 2019

Использование .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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...