如何在没有使用JQuery的情况下将多个事件绑定到一个监听器?

229

当处理浏览器事件时,我开始使用Safari的touchEvents来处理移动设备上的事件。我发现addEventListener与条件语句一起使用会导致堆积的问题。该项目不能使用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);

JQuery的bind允许多个事件,使用方式如下:

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

有没有一种方法可以像 JQuery 示例中那样组合这两个事件监听器? 例如:

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

欢迎提出建议或提示!

11个回答

-4
// BAD: One for each event - Repeat code
textarea.addEventListener('keypress', (event) => callPreview);
textarea.addEventListener('change', (event) => callPreview);

// GOOD: One run for multiple events
"keypress change".split(" ").forEach((eventName) => textarea.addEventListener(eventName, callPreview));


如果你认为某事是好的做法/坏的做法,就请解释原因。 另外,我不认为你的例子展示了一行代码,按空格分割是一个好的做法。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接