根据行索引数组获取行的jQuery集合

时间:2011-12-20 14:52:54

标签: javascript jquery html

我有一系列索引(没有特定顺序),我需要根据这些索引选择表中的所有<tr>

我有什么感觉马虎&amp;效率低下。有没有更好的方法来编写这个选择器?

对于那些喜欢摆弄的人:http://jsfiddle.net/PwnhJ/1/

对于其他人:

<table>
    <tr>
        <td>one</td>
    </tr>
    <tr>
        <td>two</td>
    </tr>
    <tr>
        <td>three</td>
    </tr>
    <tr>
        <td>four</td>
    </tr>
    <tr>
        <td>five</td>
    </tr>
    <tr>
        <td>six</td>
    </tr>
    <tr>
        <td>seven</td>
    </tr>
</table>

var indices = [0,3,4,6];
//What I'd love to do
alert($("tr").eq(indices).length); //returns 0

//What does work, but feels sloppy & inefficient 
var selector = ""; 
$(indices).each(function(i, index){
    selector += "tr:eq(" + index + ")";
    if(i + 1 != indices.length){
        selector += ","
    }
});

alert($(selector).length); //returns 4

任何帮助,评论和建议将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:6)

http://jsfiddle.net/aUmNK/1/

var indices = [0,3,4,6];

console.log( jQuery( "table tr").filter( function(){
   return jQuery.inArray( this.rowIndex, indices ) > -1; 
}));

答案 1 :(得分:1)

试试这个

var indices = [0,3,4,6];

$( "table > tr").filter( function(index){
   return $.inArray(index, indices) > -1; 
});