jQuery:对一组对象执行操作?

时间:2009-03-17 10:40:25

标签: jquery

我有4个jQuery对象(即通过$("ObjectID")构建的东西),我想以优雅的方式对所有这些对象执行相同的操作。我原以为这样的东西会起作用,但似乎不是:

$([obj1, obj2, obj3, obj4]).change(function() { otherObj.show(); });
$([obj1, obj2, obj3, obj4]).attr("disabled", "disabled");

这有一个很好的语法吗?这似乎是一个有点盲目的疏忽。目前我见过的最好的是

$([obj1, obj2, obj3, obj4]).each(
    function() { this.change(function() { otherObj.show(); }));

4 个答案:

答案 0 :(得分:5)

你的意思是你有:

var obj1 = $("...");
var obj2 = $("...");
var obj3 = $("...");
var obj4 = $("...");

如果是这样,您可以将它们变成一组:

var complete = obj1.add(obj2).add(obj3).add(obj4);

然后只使用最终设置:

complete.change(function() {
  otherObj.show();
}).attr("disabled", true);

答案 1 :(得分:2)

尝试在创建对象并执行

时将类附加到对象
$(".class")
    .change(function(){otherObj.show();})
    .attr("disabled","disabled");

答案 2 :(得分:2)

这适用于ID:

$("#obj1,#obj2,#obj3,#obj4")

它也适用于任何选择器。您可以在逗号分隔列表中组合任何内容。

答案 3 :(得分:0)

使用each命令肯定是解决它的一种方法,但还有其他方法。

你可以peel away the jQuery object to get an array,在数组上执行你需要做的任何事情,然后将它包装回jQuery对象。

还有一些plugins with array methods and enumurables允许你操作数组和jQuery对象。