2011-12-12 75 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就像你说的。第四个会和其他人有同样的问题。 –