作为jQuery选择器的字符串数组?

时间:2009-06-16 15:03:05

标签: javascript jquery

我有一个有效的jQuery选择器字符串数组(即页面上元素的ID):

["#p1", "#p2", "#p3", "#p4", "#p5"]

我想在jQuery数组中选择带有这些ID的元素。这可能是基本的,但我在网上找不到任何东西。我可以有一个for循环创建一个字符串"#p1,#p2,#p3,#p4,#p5"然后可以作为单个选择器传递给jQuery,但是不是另一种方式吗?有没有办法将字符串数组作为选择器传递?

编辑:实际上,有an answer out there already

7 个答案:

答案 0 :(得分:47)

好吧,有'加入':

["#p1", "#p2", "#p3", "#p4", "#p5"].join(", ")

编辑 - 额外信息:

可以选择一个元素数组,问题在这里你还没有元素,只有选择器字符串。无论你如何切片,你都必须执行像.getElementById这样的搜索或使用实际的jQuery选择。

答案 1 :(得分:13)

试试Array.join method

var a = ["#p1", "#p2", "#p3", "#p4", "#p5"];
var s = a.join(", ");
//s should now be "#p1, #p2, #p3, ..."
$(s).whateverYouWant();

答案 2 :(得分:8)

$(foo.join(", "))怎么样?

答案 3 :(得分:4)

使用array.join方法将它们连接在一起

$(theArray.join(','));

答案 4 :(得分:3)

如果你想让他们单独做某事,还有.each();

在下面的示例中,每次点击都会使其中任何一个变为红色:

var peas = ['#p1','#p2','#p3','#p4','#p5'];
$.each(peas, function(i){
    $(peas[i]).click( function(){
        $(peas[i]).css({'color':'red'});
    });
});

当你将'i'抛入函数参数时,它会适当地找到数组中的值。当你执行'.each()'格式时,格式如下:

$.each(array, function(i){
    // any code you wish as long as you have an array selector
    //$(array[i]).whatever function
});

一个更大的例子。假设你想要点击红色P,但希望其他ps返回默认颜色。只需制作一系列nonPea和voila!

var peas = ['#p1','#p2','#p3','#p4','#p5']
,   nonPeas = ['#p5, #p2, #p3, #p4'
              ,'#p1, #p5, #p3, #p4'
              ,'#p1, #p2, #p5, #p4'
              ,'#p1, #p2, #p3, #p5'
              ,'#p1, #p2, #p3, #p4']
;
$.each(peas, function(i){
    $(peas[i]).click( function(){
        $(peas[i]).css({'color':'red'});
        $(nonPeas[i]).css({'color':'black'});
    });
});

我知道有人肯定想知道每个值数组是否为jquery选择器。希望一切顺利!

来源:     jQuery .each()     The fiddle in action (with updates!)

答案 5 :(得分:2)

我认为你正在寻找join

var arr = ["#p1", "#p2", "#p3", "#p4", "#p5"];
$(arr.join(","))

答案 6 :(得分:-1)

更短的:

["#p1", "#p2", "#p3", "#p4", "#p5"].toArray()