Cam*_*oft 5 jquery events event-handling prototypejs
我需要使用jQuery将单个事件处理程序附加到多个DOM元素.我目前正在使用jQuery的each()方法实现这一目标.见下文:
$([elm1, elm2, elm3]).each(function() {
this.click(eventHandler);
});
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法在不使用每个方法和闭包的情况下执行此操作.我以为我能做的事情如下:
$(elm1, elm2, elm3).click(eventHandler);
Run Code Online (Sandbox Code Playgroud)
这种语句使用Prototype.js而不是jQuery.我问这个问题的原因是因为在使用Prototype.js和jQuery之后我发现jQuery需要更简单的语句才能在几乎每个区域实现相同的任务所以我假设必须有更好的方法来做到这一点?
UPDATE
经过一些调试后发现我原来尝试使用以下方法执行此操作:
$([elm1, elm2, elm3]).click(eventHandler);
Run Code Online (Sandbox Code Playgroud)
失败是因为使用jQuery的$函数创建的变量elm1,elm2和elm3.所以问题已经改变,为什么以下不起作用:
var elm1 = $('#elm1');
var elm2 = $('#elm2');
var elm3 = $('#elm3');
$([elm1, elm2, elm3]).click(eventHandler);
Run Code Online (Sandbox Code Playgroud)
但使用DOM以下内容:
var elm1 = document.getElementById('elm1');
var elm2 = document.getElementById('elm2');
var elm3 = document.getElementById('elm3');
$([elm1, elm2, elm3]).click(eventHandler);
Run Code Online (Sandbox Code Playgroud)
您可以像这样做尽可能短:
$([elm1, elm2, elm3]).click(eventHandler);
Run Code Online (Sandbox Code Playgroud)
当你离开数组的括号时,你正在调用一个不同的重载jQuery(),用括号将1个参数作为数组传递,所以你要调用jQuery(elementArray)构造函数.