我有超过900行的表。
如果我这样做: $('table tr:gt(3):lt(6)')
我将接受在最后3或6元,为什么? 应用于同一主选择所有的选择,或者是它们依次作用于不同的选择?
我有超过900行的表。
如果我这样做: $('table tr:gt(3):lt(6)')
我将接受在最后3或6元,为什么? 应用于同一主选择所有的选择,或者是它们依次作用于不同的选择?
他们顺序地施加,所以首先将过滤掉第一四个元素( :gt(3)
那么你将过滤掉第六后的所有元素( :lt(6)
的已过滤的组元素。
想象一下这样的HTML:
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
然后做下面的jQuery:
$('br:gt(3):lt(6)').addClass('sel');
现在,您将有:
<br/><br/>
<br/><br/>
<br class="sel"/><br class="sel"/>
<br class="sel"/><br class="sel"/>
<br class="sel"/><br class="sel"/>
<br/><br/>
我建议你使用slice()方法来代替。
http://docs.jquery.com/Traversing/slice#startend
$('table tr').slice(2, 5).addClass("something");
不太你可能会觉得 - 什么
工作演示
基本上,该第二过滤器被顺序地施加到匹配组第一过滤器。
例如,在具有10行的表, :gt(3)
将过滤的元件5 - 10,那么:lt(6)
将被施加到所述6个元素,而不是过滤任何。
如果添加/编辑到演示网址,你可以选择玩,看看自己。 如果改变了第二过滤器,以:lt(2)
将得到的行5和6以红色突出显示
出于某种原因:lt(6)
将在选择被忽略,所以它会在这个intsance返回一切大于3。
但是,如果切换过来,它会按预期工作
$('table tr:lt(6):gt(3)')
将返回2行(仅行4和5是6和3之间)。
**编辑:**使用v.1.3.2
而且, lt(6)
不会被忽略,不只是工作,我期望它。 所以:gt(3):lt(6)
实际上将返回6个元素(如果你有足够的行,即是)