小编典典

将多个事件绑定到侦听器(没有 JQuery)?

all

在处理浏览器事件时,我开始为移动设备整合 Safari 的 touchEvents。我发现addEventListeners 与条件叠加。
这个项目不能使用 JQuery。

标准事件监听器:

/* option 1 */
window.addEventListener('mousemove', this.mouseMoveHandler, false);
window.addEventListener('touchmove', this.mouseMoveHandler, false);

/* option 2, only enables the required event */
var isTouchEnabled = window.Touch || false;
window.addEventListener(isTouchEnabled ? 'touchmove' : 'mousemove', this.mouseMoveHandler, false);

JQuerybind允许多个事件,如下所示:

$(window).bind('mousemove touchmove', function(e) {
    //do something;
});

有没有办法像在 JQuery 示例中那样组合两个事件侦听器? 前任:

window.addEventListener('mousemove touchmove', this.mouseMoveHandler, false);

任何建议或提示表示赞赏!


阅读 68

收藏
2022-07-18

共1个答案

小编典典

在 POJS 中,您一次添加一个侦听器。为同一元素上的两个不同事件添加相同的侦听器并不常见。您可以编写自己的小函数来完成这项工作,例如:

/* Add one or more listeners to an element
** @param {DOMElement} element - DOM element to add listeners to
** @param {string} eventNames - space separated list of event names, e.g. 'click change'
** @param {Function} listener - function to attach for each event as a listener
*/
function addListenerMulti(element, eventNames, listener) {
  var events = eventNames.split(' ');
  for (var i=0, iLen=events.length; i<iLen; i++) {
    element.addEventListener(events[i], listener, false);
  }
}
2022-07-18