Получить каждый первый уровень ли - PullRequest
0 голосов
/ 09 августа 2011

У меня есть этот список

<ul>
    <li>
       <ul>
           <li></li>
           <li></li>
           <li></li>
       </ul>
    </li>
    <li></li>
    <li></li>
    <li></li>
</ul>

Мне нужно получить только первый уровень lis

Заранее спасибо

Ответы [ 4 ]

3 голосов
/ 09 августа 2011

Разве вы не можете использовать прямой дочерний селектор?

$("body > ul > li")

Это должно возвращать только теги li, которые являются прямыми дочерними элементами ul, тогда как это:

$("ul li")

вернетвсе потомки li-тегов, и он найдет li-потомков на всех уровнях ul.

Весь этот селектор будет работать намного лучше, если вы поместите идентификатор в UL, в который хотите вставить теги li первого уровня.Тогда ваш селектор может быть таким:

$("#myID > li")

, и он не будет зависеть от того, где в вашем DOM он находится (тогда как первый должен быть прямым потомком тега body для работы).

3 голосов
/ 09 августа 2011

Предполагая, что первый ul является прямым потомком body, вы можете использовать этот селектор:

$('body > ul > li');
0 голосов
/ 09 августа 2011

В верхней части ответов Kokos и jfriend00 вы можете использовать:

$(selector).children();

Для выбора только прямых потомков селектора.Если вы уже выбрали этот HTML в своем селекторе, просто возьмите его потомки.

0 голосов
/ 09 августа 2011

Попытка сохранить его как можно более общего применения:

$('ul').filter(function(){
    return ($(this).closest('li').length == 0);
}).children('li');

Либо ответ @Kokos или @ jfriend00 отличный. Единственная проблема - если <ul> не является прямым потомком <body>.

Если это разовый сценарий, возможно, опубликуйте немного больше, и мы можем уточнить; в противном случае, не зная больше о структуре документа, необходимо сделать попытки обобщения ( см. выше ).

...