编程语言
首页 > 编程语言> > javascript – 向一个元素添加多个事件侦听器

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