2009-12-23 102 views
12

我的問題是,我有一個表,但我只希望行的子集,從第一個索引到最後一個索引。我想你可以做這樣的:獲取一個範圍在一個jQuery選擇元素

$('table tr:gt(2):lt(5)'); 

我想它會給你只列#3,#4,但它最終給你不止於此。我如何告訴選擇器只選擇第3行和第4行?

+0

另請參閱[.slice()](http://api.jquery.com/slice/) – 2013-02-22 13:16:48

回答

19

你是相當接近,但在你的選擇的問題是:lt(5)過濾器。

你想是這樣的:

$('table tr:gt(2):lt(2)'); 

不同的是,通過應用lt()過濾器時,前三個元素已經從集合(由gt()過濾器)去除。所以這將抓住第3和第4個元素(零索引),而不是第3個到第8個元素。

+0

完美!這按預期工作。謝謝澄清。 – Bob 2009-12-23 18:19:21

+0

我想作爲一個方面的問題,我在哪裏可以提交功能請求添加範圍選擇,因此它可能看起來像 $(「表TR:在(2,4)」) 還是有一個插件已經完成這樣的功能? – Bob 2009-12-23 18:26:38

+1

@Bob @DaveWard回答說,你真的應該使用'slice'進行研究。它更具可讀性,並且會按照您期望的方式工作。而且,通過這種方式做事並沒有獲得任何性能上的提升,它仍然找到所有'table tr',然後過濾掉這個列表。 – 2009-12-23 18:58:03

0

我想你已經得到它發現在,雖然我會想象jQuery將0在它的指引元件的數量。

所以將它被GT(1)和LT(4)?

+0

對,它來自零索引。我的錯。 – Bob 2009-12-23 18:19:52

10

如何$(「表TR」)。片(2,4)

由於JavaScript數組的索引0,這將使你的表的第三和第四排。 Slice仍然會返回一個jQuery包裝(子)集,所以它的結果是一樣的。

+0

是的,但我希望選擇器只查找指定的行。用這種方法,jQuery首先獲取所有的錶行,然後過濾出不需要的表。 – Bob 2009-12-23 18:18:49

+0

@Bob,即使您使用選擇器版本 – 2009-12-23 18:56:21

+0

,它也會這樣哦,這是令人失望的。我認爲內部jQuery會跳過小於給定索引的行,或者當您使用各自的選擇器修飾符時行數大於給定索引時停止。至少這樣它就不必考慮所有的表格行。 – Bob 2009-12-23 19:15:17