javascript – 向一个元素添加多个事件侦听器
作者:互联网
所以我的困境是我不想两次编写相同的代码.一次用于click事件,另一次用于touchstart事件.
这是原始代码:
document.getElementById('first').addEventListener('touchstart', function(event) {
do_something();
});
document.getElementById('first').addEventListener('click', function(event) {
do_something();
});
我该怎么压缩这个?有一个更简单的方法!
解决方法:
也许你可以使用这样的辅助函数:
// events and args should be of type Array
function addMultipleListeners(element,events,handler,useCapture,args){
if (!(events instanceof Array)){
throw 'addMultipleListeners: '+
'please supply an array of eventstrings '+
'(like ["click","mouseover"])';
}
//create a wrapper to be able to use additional arguments
var handlerFn = function(e){
handler.apply(this, args && args instanceof Array ? args : []);
}
for (var i=0;i<events.length;i+=1){
element.addEventListener(events[i],handlerFn,useCapture);
}
}
function handler(e) {
// do things
};
// usage
addMultipleListeners(
document.getElementById('first'),
['touchstart','click'],
handler,
false);
标签:html,javascript,dom-events 来源: https://codeday.me/bug/20190919/1813069.html