Селектор jQuery для получения всех непустых списков и их печати

#jquery #jquery-selectors

#jquery #jquery-селекторы

Вопрос:

Учитывая приведенный ниже HTML, какой код jQuery позволяет получить все непустые списки и распечатать их элементы списка?

 <div id="list1" class="list">
  <ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
  </ul>
</div>
<div id="list2" class="list">
  <ul>
    <li>item 4</li>
  </ul>
</div>
<div id="list3" class="list">
  <!-- intentionally empty -->
</div>
  

Если возможно, я бы хотел, чтобы селектор возвращал только непустые списки. В этом примере селектор вернул бы list1 и list2 , а затем печатаются их значения: [item 1, item 2, item 3], [item 4] . Я представляю что-то вроде этого:

 $('div .list [count(li) > 0]').each(function(items) { $.debug(items); });
  

Ответ №1:

Вот так:

 var $nonEmptyLists = $("ul:has(li)");
  

Приведенный выше код выбирает «все элементы ul, у которых есть хотя бы 1 дочерний элемент li»

Для их печати:

 $nonEmptyLists.each(function() { $.debug( this ); });
  

Ответ №2:

Я думаю, что что-то вроде этого должно сработать : $("ul:has(li)").each(...)

Обновление: если вы хотите получить li, а не ul, это должно быть больше похоже

 $("div.list ul:has(li) li").each(...)