对于大量事件,这可能帮助:
var element = document.getElementById("myId");
var myEvents = "click touchstart touchend".split(" ");
var handler = function (e) {
do something
};
for (var i=0, len = myEvents.length; i < len; i++) {
element.addEventListener(myEvents[i], handler, false);
}
更新06/2017:
现在,新的语言功能有更广泛的应用,你可以简化添加的有限列表共享一个听众的事件。
const element = document.querySelector("#myId");
function handleEvent(e) {
// do something
}
// I prefer string.split because it makes editing the event list slightly easier
"click touchstart touchend touchmove".split(" ")
.map(name => element.addEventListener(name, handleEvent, false));
如果要处理大量的事件,并且每个听者不同的要求,你也可以pass an object其中大多数人往往忘记。
const el = document.querySelector("#myId");
const eventHandler = {
// called for each event on this element
handleEvent(evt) {
switch (evt.type) {
case "click":
case "touchstart":
// click and touchstart share click handler
this.handleClick(e);
break;
case "touchend":
this.handleTouchend(e);
break;
default:
this.handleDefault(e);
}
},
handleClick(e) {
// do something
},
handleTouchend(e) {
// do something different
},
handleDefault(e) {
console.log("unhandled event: %s", e.type);
}
}
el.addEventListener(eventHandler);
好吧,帮助:)谢谢! – coiso 2012-08-07 12:45:39
警告:该事件在句柄函数中不可用。我修复了这个bug https://pastebin.com/raw/Lrcdv1ws – higimo 2017-06-07 10:58:28