如何在两个jQuery对象上执行操作?

时间:2012-06-28 11:50:53

标签: jquery

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

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

现在让我们假设我想对它们进行一些操作。

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

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

有没有办法在jQuery中内置这个?如果没有,我可以写一个小插件来做吗?

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

4 个答案:

答案 0 :(得分:3)

还有另外一种方法,支持你喜欢的许多论点:

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

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

实例:http://jsfiddle.net/JBQDZ/

答案 1 :(得分: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/

答案 2 :(得分: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");

答案 3 :(得分:0)

一个简单的例子

function manipulateStuff(obj1, obj2) { 
   var bothObj =  $(obj1 + ", "+ obj2);  // cache a reference for further operation
   bothObj.css("color", "red");
}
manipulateStuff("div", "h1");