2011-12-12 72 views
0

我想從排索引行隱藏1至3下面的代碼是不工作:如何申請和運營商的jQuery

$("table").find("tr:gt(1)").find("tr:lt(3)").each(function() { $(this).hide() }); 
+0

你不能使用? 。奇()?我不認爲你需要使用.each .odd() – c0d3Junk13

+0

基於0的索引是否正確? – zzzzBov

+0

@zzzzBov:'gt'和'lt'是從0開始的。 http://api.jquery.com/lt-selector/ –

回答

2

第一個find()返回匹配的元素,然後第二個將進一步過濾該選擇。

試試這個選擇

$('table tr:gt(0):lt(4)').hide(); 

此外,slice()將是一個不錯的選擇(如果不是最好的)這樣

$('table tr').slice(1,4).hide(); 
+0

這些都隱藏錯誤的行。 OP想要隱藏索引1-3。第一個隱藏索引2-4,第二個隱藏索引2和第三個隱藏0-3。 –

+0

在這個問題上沒有看到關於索引的任何內容,但我編輯了我的答案。謝謝 – Stefan

+0

索引在第一個過濾器後重置,因此您需要':gt(0):lt(3)'作爲第一個示例。 –

2

嘗試使用the slice method

從文檔:

描述:減少匹配元素的要由索引範圍

.slice指定的一個子集(開始[,結束])

start一個整數,指示元素開始從零開始的位置lected。如果爲負數,則表示與該集合的結尾有偏移。

end一個整數,指示元素停止選擇時從零開始的位置。如果爲負數,則表示與該集合的結尾有偏移。如果省略,範圍會一直持續到設定的結束。

代碼:

http://jsfiddle.net/tkVut/

$("table tr").slice(1, 3 + 1).hide(); 

還要注意的是the hide method不需要你使用each

隱藏匹配的元素

2

你可以使用filter到匹配的元素集合減少那些正確的範圍內:

$("table tr").filter(function(i) { 
    return i > 1 && i < 3; 
}).hide(); 

請注意,我沒有使用each遍歷集合末匹配的元素,因爲hide,就像大多數jQuery方法一樣,它也適用於集合中的所有元素。

+0

這是錯誤的。它只包含索引2.您需要使用'> ='和'<='才能正常工作。 –

1

一個選擇?

$('table tr:gt(0):lt(4)').hide(); 

我不能告訴你,如果要包括性指數13,所以現在我會假設你做的。

如果你沒有,你可以使用:

$('table tr:gt(1):lt(3)').hide(); 

但是,這將僅僅是指數2

$('table tr:eq(2)').hide(); 

如果你需要保持$('table')爲基數選擇,你可以使用find方法:

$('table').find('tr:gt(#):lt(#)').hide().end().chain().more().stuff() 
+0

第一個隱藏所有索引> 0。第二個隱藏2-4。第三個隱藏2就像你說的。第四個會和其他人有同樣的問題。 –