链接jQuery选择:LT和:GT(Chaining jQuery selectors :lt an

2019-06-26 02:41发布

我有超过900行的表。

如果我这样做: $('table tr:gt(3):lt(6)')我将接受在最后3或6元,为什么? 应用于同一主选择所有的选择,或者是它们依次作用于不同的选择?

Answer 1:

他们顺序地施加,所以首先将过滤掉第一四个元素( :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/>


Answer 2:

我建议你使用slice()方法来代替。

http://docs.jquery.com/Traversing/slice#startend

$('table tr').slice(2, 5).addClass("something");


Answer 3:

不太你可能会觉得 - 什么

工作演示

基本上,该第二过滤器被顺序地施加到匹配组第一过滤器。

例如,在具有10行的表, :gt(3)将过滤的元件5 - 10,那么:lt(6)将被施加到所述6个元素,而不是过滤任何。

如果添加/编辑到演示网址,你可以选择玩,看看自己。 如果改变了第二过滤器,以:lt(2)将得到的行5和6以红色突出显示



Answer 4:

出于某种原因: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个元素(如果你有足够的行,即是)



文章来源: Chaining jQuery selectors :lt and :gt