Я создаю вложенную выпадающую навигацию для продуктов и хочу автоматически скрывать все категории, которые пусты.
К сожалению, язык на стороне сервера не позволяет эффективно делать это, поэтому я подумал, что могу вывести количество продуктов, которые есть у каждой категории напрямую, а затем использовать jQuery для удаления любых пустых узлов.
Я хочу нацелиться только на li
в nav#top_nav
:
<nav id="top_nav">
<nav class="nav1">
<ul>
<li data-num-products="0">
<a href="...">AAA</a>
<ul>
<li data-num-products="3"><a href="...">BBB</a></li>
<li data-num-products="0"><a href="...">CCC</a></li>
</ul>
</li>
<li data-num-products="7"><a href="">DDD</a></li>
</ul>
<nav>
</nav>
Учитывая 1 уровень вложенности ul
, я хочу удалить все li
, которые ...
Таким образом, в приведенном выше примере AAA
сохраняется, потому что у него есть ul
дочерних элементов, но CCC
удаляется, потому что у него нет ul
дочерних элементов и нет продуктов.
UPDATE:
Для этого может потребоваться 2 прохода удаления, потому что, если li содержит ul, все элементы li которого удалены, мы тоже захотим удалить ul.