1

假设我有一个传递多个 jQuery 对象的函数。

function manipulateStuff(obj1, obj2) { /* ... */ }
manipulateStuff($("div"), $("h1"));

现在让我们假设我想对他们两个都执行一些操作。

我总是可以为每个重复代码,或者编写一些循环通过它们的代码,但我不想这样做。我想要一些组合多个 jQuery 对象的元素的方法。以下代码不起作用,但它演示了我正在寻找的东西

$(obj1, obj2).css("color", "red");

是否已经有办法在 jQuery 中内置了这个功能?如果没有,我可以写一个小插件来做吗?

编辑:要清楚,我正在操作jQuery 对象,而不是字符串选择器。我已经知道选择器中的逗号运算符。

4

4 回答 4

3

另一种方式,支持尽可能多的论点:

function manipulateStuff(){
   $.each(arguments,function(){
       $(this).css('color','red');
   });
}

manipulateStuff($('div'),$('h1'));

现场示例:http: //jsfiddle.net/JBQDZ/

于 2012-06-28T11:54:28.190 回答
2

如果您知道选择器,最简单的方法就是使用逗号:

$('div, h1').doSomething();

如果你有匿名的 jQuery 对象并且想要合并它们,你可以创建一个简单的实用函数来合并多个元素的 jQuery 对象:

$.add = function() {
    var args = $.makeArray(arguments);
    return $.fn.add.apply(args.shift(), args);
}

var divs = $('div'),
    h1 = $('h1');

$.add(divs, h1).doSomething();

http://jsfiddle.net/hvm7z/

于 2012-06-28T12:06:34.483 回答
1

如果你使用 jQuery 对象,你可以使用这个:

function manipulateStuff(obj1, obj2) {
    obj1.add(obj2).css("color", "red");
}

manipulateStuff($("div"), $("h1"));

或者,如果您使用字符串选择器,请尝试以下操作:

function manipulateStuff(obj1, obj2) {
    $(obj1 + ", " + obj2).css("color", "red");
}

manipulateStuff("div", "h1");
于 2012-06-28T11:52:31.903 回答
0

一个简单的例子

function manipulateStuff(obj1, obj2) { 
   var bothObj =  $(obj1 + ", "+ obj2);  // cache a reference for further operation
   bothObj.css("color", "red");
}
manipulateStuff("div", "h1");
于 2012-06-28T11:53:00.140 回答