2009-07-16 109 views
15

我有一個超過9行的表。鏈接jQuery選擇器:lt和:gt

如果我這樣做:$('table tr:gt(3):lt(6)'),我最終應該收到3或6個元素,爲什麼?所有選擇器是否應用於相同的主要選擇,或者它們是否被連續應用於不同的選擇?

回答

28

它們是按順序應用的,所以首先您將過濾掉前四個元素(: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/> 
+5

請注意,「:lt(n)」和「:lt(n)」選擇器是0索引且不包含在內。 – Blixt 2009-07-16 12:39:17

+0

正式指出,謝謝。 – glmxndr 2009-07-16 12:46:31

+0

謝謝先生,非常有幫助! – GianFS 2013-01-08 04:13:43

1

出於某種原因:lt(6)將在選擇被忽略,因此它會在這個縮影中返回大於3的所有內容。

然而,如果切換過來,它會按預期

$('table tr:lt(6):gt(3)') 

將返回2排工作(只有行4和5是6之間和3)。

**編輯:**使用v.1.3.2

而且也lt(6)不會被忽略,不只是工作,我期望它。所以:gt(3):lt(6)實際上會返回6個元素(如果你有足夠的行,那就是)

3

不太你可能會覺得 -

Working Demo

基本上,應用第二過濾器順序,以匹配集的第一個過濾器。

例如,在一個有10行的表上,:gt(3)將過濾到元素5-10,然後:lt(6)將應用於這6個元素,而不是過濾任何。

如果您將/編輯添加到演示網址,則可以使用選擇器進行播放並親自查看。如果將第二個過濾器更改爲:lt(2),則會獲得以紅色突出顯示的第5行和第6行