使用.add()选择多个jQuery对象

28

.add()方法是否允许一次选择多个对象,而不是逐个添加?

one.add(two).add(three).add(four).on("click", function() { });
以下这些变量被设置为它们特定的值,因为每个变量都有不同的功能。
var one   = $("#1");
var two   = $("#2");
var three = $("#3");
var four  = $("#4");

但如果我想添加一个适用于所有这些元素的额外功能怎么办?我是不是要逐个添加?

我知道你可以使用$("#1,#2,#3,#4")来选择它们所有,但我只想利用上面的变量。


2
顺便说一句:在ID声明中,以数字作为第一个字符从来不是一个好主意...;-) - yckart
2
@yckart 它们从未被命名为那样。这只是为了举例说明。 - Antony
3个回答

38

为了代码可读性,我更倾向于使用数组方法...

$([one, two, three, four]).each(function() {
    // your function here
});

11

您不能一次添加多个对象,例如:

var groupThree = one.add(three, five); // will not work as expected

您可以缓存所添加的对象,这样您只需要添加一次即可 - http://jsfiddle.net/X5432/

var one   = $("#1");
var two   = $("#2");
var three = $("#3");
var four  = $("#4");
var five  = $("#5");

var groupOne = one.add(two).add(three).add(four);
var groupTwo = groupOne.add(five);

$('#first').click(function(e){
    e.preventDefault();
    groupOne.css({'background': '#00FF00'});
});

$('#second').click(function(e){
    e.preventDefault();
    groupTwo.css({'background': '#FF0000'});
});

但是我更喜欢使用数组方法,这只是一种不同的思考方式。


2
这很好,您可以通过像这样使用它来获得更多的好处:groupOne.click(function(e){}); - Werner

5
你可以像这样把它们放入数组中:
var k = [one,two,three,four]

$.each(k,function(){
  $(this).click(function(){
     //Function here
   });
});

7
或者只需这样做:$(k).click(function(){...}) - Derek 朕會功夫

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接