在jQuery中将事件处理程序绑定到多个元素变量?

18

我想将多个被定义为变量的元素绑定在一起。我知道这是可能的:

$('selector1, selector2').bind(...)

但是我想做类似这样的事情:

$($element1, $element2, $element3).bind(...)

有什么想法吗?


也许不是最好的方法,但只是为了好玩,你可以这样做:$($element1.selector + ", " + $element2.selector + ", " + $element3.selector) - nicosantangelo
2个回答

24

你需要将它们添加到一个结果集中:

$element1.add($element2).add($element3).bind(...)

或者对于任意数量的元素:

var elems = [$element1, $element2, $element3, ...];
var $result = $();

$.each(elems, function() {
    $result = $result.add(this);
});

$result.bind(...);

或者使用 Array.reduce

[$element1, $element2, $element3, ...].reduce(function($result, $elem) {
    return $result.add($elem);
}, $()).bind(...);

4
你可以使用add()方法,具体信息请查看add()
var $all = $element1.add($element2).add($element3).bind( ... ); //.add(...)

我假设(可能是错误的)这些元素是js对象,我更新了我的答案以防万一。 - nicosantangelo
测试一下。jQuery对数组对象和DOM对象的包装方式是不同的。 - Blender
它不能与jQuery实例一起使用,我知道,我应该提到这一点。我希望编辑可以纠正这个问题。 - nicosantangelo
第一个考虑的是非jQuery对象。但你是对的,这很令人困惑,所以我会编辑答案并保留最后一部分。但是为了澄清,你的fiddle在get方法中缺少0,这就是为什么它没有工作http://jsfiddle.net/Uj9hk/3/。 - nicosantangelo

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