假设我有一个传递多个jQuery对象的函数。
function manipulateStuff(obj1, obj2) { /* ... */ }
manipulateStuff($("div"), $("h1"));
现在让我们假设我想对它们进行一些操作。
我总是可以为每个代码重复代码,或者编写一些遍历它们的代码,但我不想这样做。我想要一些方法来组合多个jQuery对象的元素。以下代码不起作用,但它演示了我正在寻找的那种东西
$(obj1, obj2).css("color", "red");
有没有办法在jQuery中内置这个?如果没有,我可以写一个小插件来做吗?
编辑:要清楚,我正在操纵 jQuery对象,而不是字符串选择器。我已经知道选择器中的逗号运算符。
答案 0 :(得分:3)
还有另外一种方法,支持你喜欢的许多论点:
function manipulateStuff(){
$.each(arguments,function(){
$(this).css('color','red');
});
}
manipulateStuff($('div'),$('h1'));
答案 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();
答案 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");