JQuery: Использование: EQ и: не в заявлении - PullRequest
2 голосов
/ 18 ноября 2011

HTML

<ul>
   <li>1</li>
   <li>2</li>
   <li>3    
     <ul id="sub">
      <li>3.1</li>
      <li>3.2</li>
   </ul>
 </li>
 <li>4</li>
<ul>

Я пытаюсь выбрать первые несколько

тегов на основе условия и исключить любые , в которых есть

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Предполагая следующий HTML:

<ul id="main">
   <li>1</li>
   <li>2</li>
   <li>3    
     <ul id="sub">
       <li>3.1</li>
       <li>3.2</li>
     </ul>
   </li>
   <li>4</li>
<ul>

Вы можете использовать jQuery следующим образом:

$('#main > li:not(:has(#sub))');

... и вот скрипка: http://jsfiddle.net/yqrd5/


Или, если вы хотите выбрать среди первых 3:

$('#main > li:lt(3):not(:has(#sub))');

... или динамически:

var j = 3;
$('#main > li:lt(' + j + '):not(:has(#sub))');

... и вот скрипка: http://jsfiddle.net/yqrd5/1/


Или вы можете захотеть первые 3, у которых этого нет ul:

$('#main > li:not(:has(#sub)):lt(3)');

... и вот скрипка: http://jsfiddle.net/yqrd5/2/

1 голос
/ 18 ноября 2011

Используйте селектор :has:

$('li:not(:has(ul#sub))').css('padding-top', paddingTop);

http://jsfiddle.net/mblase75/62x3S/

, который выбирает <li>, содержащий <ul id="sub">, что именно то, что вы просили.Однако, если вы также хотите исключить подсписок:

$('ul:not(#sub) > li:not(:has(ul#sub))').css('padding-top', paddingTop);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...