2012-08-07 162 views
4

有没有一种方法可以使用jQuery通过索引获取多个元素 - 类似于.eq(),但是您可以传递数组而不是单个索引?事情是这样的:使用jQuery通过索引获取多个元素

var arrIndexes = [0, 4, 5]; 
var stuff = $("#datatable tbody tr").eq(arrIndexes).css('background-color', 'red'); 
+1

如何只使用一个循环?你不能指望jquery拥有所有人都知道的实用方法。 – thatidiotguy 2012-08-07 17:24:39

回答

8

只需使用filter(index)中的第一个参数并使用indexOf查找它

var arrIndexes = [0, 4, 5]; 
$("#datatable tbody tr").filter(function(index) { 
    return arrIndexes.indexOf(index) > -1; 
}).css('background-color', 'red'); 

演示:http://jsbin.com/ivexut/1/

您可能需要添加功能的indexOf如果你是有需要的老的浏览器:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf

+0

这就是我正在寻找的东西......我将它插入我的代码中,并且它像魅力一样工作。谢谢! – 2012-08-07 17:53:34

3

您可以使用jQuery的过滤功能,通过选择返回的对象的集合应用自定义过滤器,您可以阅读更多关于过滤here

Live Demo

$("#datatable tbody tr").filter(function(){ 
    if(arrIndexes.indexOf($(this).index()) != -1) 
     return $(this); 
}).css('background-color', 'red');