У вас есть "внешняя" ul и "внутренняя" ul. Выбрать внутренний 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);
Ps. Я бы не использовал селектор 'li', чтобы найти внешнюю или внутреннюю ul. Вы можете столкнуться с пустыми ul, если вы заполняете их программно (что порождает селектор, зависящий от li), и почему вы должны использовать то, что вы делаете не нужно?