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>
我正在尝试选择前几个&lt; li&gt;基于条件的标签并排除任何&lt; li&gt;具有&lt; ul&gt;在里面用id'sub'。
我能够获得第一部分,但无法排除ul内的带有“sub”的li标签。
这是我正在使用的jQuery代码。
$(columns[i] + ' li:eq(:not(#sub li)'+ j +')').css('padding-top', paddingTop);
答案 0 :(得分:2)
假设以下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 :(得分:1)
使用:has
选择器:
$('li:not(:has(ul#sub))').css('padding-top', paddingTop);
http://jsfiddle.net/mblase75/62x3S/
选择包含<li>
的{{1}},这正是您所要求的。但是,如果您还要排除子列表:
<ul id="sub">