首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将多个事件绑定到一个监听器(没有JQuery)?

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

Stack Overflow用户
提问于 2012-01-10 08:15:09
回答 9查看 189.8K关注 0票数 175

在处理浏览器事件时,我已经开始在移动设备上集成Safari的touchEvents。我发现

%s与条件句堆积在一起。

此项目无法使用JQuery。

一个标准的事件监听器:

代码语言:javascript
复制
/* 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的

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

代码语言:javascript
复制
$(window).bind('mousemove touchmove', function(e) {
    //do something;
});

有没有办法像JQuery示例那样组合这两个事件侦听器?

例如:

代码语言:javascript
复制
window.addEventListener('mousemove touchmove', this.mouseMoveHandler, false);

如果您有任何建议或建议,我们将不胜感激!

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-01-10 08:29:28

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

代码语言:javascript
复制
/* 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
代码语言:javascript
复制
function addListenerMulti(el, s, fn) {
  s.split(' ').forEach(e => el.addEventListener(e, fn, false));
}
票数 125
EN

Stack Overflow用户

发布于 2014-11-20 08:32:40

一些紧凑的语法可以达到预期的结果,POJS:

代码语言:javascript
复制
"mousemove touchmove".split(" ").forEach(function(e){
      window.addEventListener(e,mouseMoveHandler,false);
    });
票数 134
EN

Stack Overflow用户

发布于 2017-07-14 15:14:41

整理艾萨克的回答:

代码语言:javascript
复制
['mousemove', 'touchmove'].forEach(function(e) {
  window.addEventListener(e, mouseMoveHandler);
});

编辑

ES6助手函数:

代码语言:javascript
复制
function addMultipleEventListener(element, events, handler) {
  events.forEach(e => element.addEventListener(e, handler))
}
票数 78
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8796988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档