Ответ 1
Попробуйте следующее:
jQuery("li:not(.current_page_parent) ul.children").hide();
Я хочу скрыть элемент, если его родитель не имеет определенного класса:
<li class="current_page_parent">
<a href="parent.html">Parent</a>
<ul class="children">
<li>foo</li>
<li>bar</li>
</ul>
</li>
jQuery("ul.children").hide();
В настоящее время всегда скрывает <ul class="children">
независимо от класса. Я хотел бы закрыть его только в том случае, если parent :not
a <li class="current_page_parent">
.
jQuery("ul.children:not(:parent.current_page_ancestor)").hide();
без везения.
Попробуйте следующее:
jQuery("li:not(.current_page_parent) ul.children").hide();
Лучший способ, я думаю:
$(".children").not(".current_page_parent .children").hide();
$('ul').filter(function() {
return $(this).parent('.current_page_parent').length === 0
}).hide();
Вероятно, вы хотите сначала отфильтровать элементы ul
с "плохим" родителем, а затем выбрать все дочерние элементы:
jQuery("ul:not(:parent.current_page_ancestor).children")