У вас есть «внешний» ул и «внутренней» ул. Выбор внутренней ul очень прост, вы просто используете селектор потомков ul.wrap ul.wrap
. Во внешнем немного сложнее, потому что вам нужно будет использовать условие с не селектором: ul.wrap:not(ul.wrap ul.wrap)
. Вы в основном говорите: дайте мне все ul.wrap, у которых нет родителя, у которого есть обертка. Если вы хотите выбрать «li», используйте прямой селектор, т. Е. > li
за каждым селектором.
Я добавил его в качестве примера для вас, чтобы показать, что это работает:
Html:
<ul class="wrap" tag="outer">
<li class="out"></li>
<li class="out"></li>
<li class="out">
<ul class="wrap" tag="inner">
<li class="out"></li>
<li class="out"></li>
</ul>
</li>
</ul>
JQuery:
alert($('ul.wrap:not(ul.wrap ul.wrap)').attr('tag'));
alert($('ul.wrap ul.wrap').attr('tag'));
alert($('ul.wrap:not(ul.wrap ul.wrap) > li').length);
alert($('ul.wrap ul.wrap > li').length);
Пс. Я бы не использовал селектор «li» для поиска внешней или внутренней ul. Возможно, вы столкнетесь с пустым знаком ul, если вы их программным образом заполните (что сломает селектор, зависящий от li) и почему вы должны использовать то, что вам не нужно?
Это может быть полезно прочитать немного о селекторах на этой странице: http://api.jquery.com/category/selectors/. Повеселись! –