2013-02-12 2 views
0

(извините, но фрагмент кода не работает здесь)Выберите ребенка в .Не()

<ul> 
    <li><a href="#" title="" class="active">d</a> 
    <ul> 
     <li><a href="#" title="">d</a></li> 
     <li><a href="#" title="">d</a></li> 
    </ul> 
    </li> 
    ... 
</ul> 

$('#menu > ul > li ul').click(function (e) { 
    e.stopPropagation(); 
}).not(this.parent().find('a.active')).hide(); 

Взгляните на заявление .not(). Я пытаюсь получить дочерний UL, показанный, когда у брата a из родителя li есть класс, активный. Я пробовал множество способов (братья и сестры, родитель, find, hasclass, ..), но ни один из них не работает. Вероятно, потому что я не правильно использую селектора.

Спасибо!

+0

У меня возникли некоторые проблемы с кодом форматирования ; Я не знаю почему, но мои извинения. –

ответ

0

вы можете сделать это с чистым CSS:

.active + ul { 
    display: block; 
} 
a + ul { 
    display: none; 
} 

, но если вы хотите JQuery, то:

$('#menu > ul > li ul').click(function (e) { 
    e.stopPropagation(); 
}).hide(); 
$('#menu > ul > li').has('.active').find('ul').show(); 

является лучшим вариантом

+0

Спасибо. Я пытался сделать это в одной строке, но ваш, конечно, работает. –

Смежные вопросы