jquery数组进入eq函数

时间:2012-02-14 14:03:29

标签: jquery arrays

我想将数组作为参数发送到eq函数。像那样:

$(this).find('tr').not(':eq(array)').each(function(){

});

我使用循环和eval函数完成了这项操作,但它看起来并不容易编辑。这是我的代码。

$.fn.grilestir = function(options){

var nots = '';

for(var i=0;i<options.row_numbers.length;i++){
    nots += "not(':eq("+options.row_numbers[i]+")').";
}

    eval("$(this).find('tr')."+nots+"each(function(){\
        var tr = $(this); var orj;\
        if(options.mod == 'passive-rows'){\
            $(this).mouseover(function(){\
                orj = tr.css('backgroundColor');\
                tr.css('backgroundColor', '#777777');\
            });\
            $(this).mouseout(function(){\
                tr.css('backgroundColor', orj); \
            });\
        }\
    });");

}

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:4)

我假设您的数组包含一组表示元素索引的数字。 eq选择器无效。

您可以使用filter将匹配的元素集减少到数组中索引的元素集:

var arr = [1, 2];
$("someSelector").filter(function(index) {
    return arr.indexOf(index) > -1;
});

这是working example

请注意使用Array.prototype.indexOf,这在旧浏览器中不可用(着名的IE&lt;版本9)。但是,有很多垫片可以解决这个问题。 ,如评论中所述(感谢@mcgrailm),您可以使用jQuery.inArray

var arr = [1, 2];
$("someSelector").filter(function(index) {
    return $.inArray(index, arr) > -1;
});