Как выбрать элемент, родителем которого не указан класс?


Я хочу скрыть элемент, если его родитель не имеет определенного класса:

HTML

<li class="current_page_parent">
    <a href="parent.html">Parent</a>
    <ul class="children">
        <li>foo</li>
        <li>bar</li>
    </ul>
</li>

JQuery

jQuery("ul.children").hide();

В настоящее время всегда скрывает <ul class="children"> независимо от класса. Я хотел бы закрыть его только в том случае, если родителем является :not an <li class="current_page_parent">.

Я пробовал:

jQuery("ul.children:not(:parent.current_page_ancestor)").hide();

Безрезультатно.

4 25

4 ответа:

Попробуйте это:

jQuery("li:not(.current_page_parent) ul.children").hide();

Лучший способ, который я думаю:

$(".children").not(".current_page_parent .children").hide();

JSFiddle

Вероятно, вы хотите сначала отфильтровать элементы ul с "плохим" родителем и затем выбрать все дочерние элементы:

jQuery("ul:not(:parent.current_page_ancestor).children")
$('ul').filter(function() {
    return $(this).parent('.current_page_parent').length === 0
}).hide();