在处理浏览器事件时,我已经开始在移动设备上集成Safari的touchEvents。我发现
%s与条件句堆积在一起。
此项目无法使用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的
允许多个事件,如下所示:
$(window).bind('mousemove touchmove', function(e) {
//do something;
});
有没有办法像JQuery示例那样组合这两个事件侦听器?
例如:
window.addEventListener('mousemove touchmove', this.mouseMoveHandler, false);
如果您有任何建议或建议,我们将不胜感激!
发布于 2012-01-10 08:29:28
在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
function addListenerMulti(el, s, fn) {
s.split(' ').forEach(e => el.addEventListener(e, fn, false));
}
发布于 2014-11-20 08:32:40
一些紧凑的语法可以达到预期的结果,POJS:
"mousemove touchmove".split(" ").forEach(function(e){
window.addEventListener(e,mouseMoveHandler,false);
});
发布于 2017-07-14 15:14:41
整理艾萨克的回答:
['mousemove', 'touchmove'].forEach(function(e) {
window.addEventListener(e, mouseMoveHandler);
});
编辑
ES6助手函数:
function addMultipleEventListener(element, events, handler) {
events.forEach(e => element.addEventListener(e, handler))
}
https://stackoverflow.com/questions/8796988
复制相似问题