在处理浏览器事件时,我已经开始为移动设备整合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);
任何建议或提示,感谢!
AddEventListener接受一个表示event.type的简单字符串。因此,您需要编写一个自定义函数来迭代多个事件。
这是在jQuery中通过使用.split(" ")处理的,然后在列表上迭代,为每种类型设置eventlistener。
// Add elem as a property of the handle function
// This is to prevent a memory leak with non-native events in IE.
eventHandle.elem = elem;
// Handle multiple events separated by a space
// jQuery(...).bind("mouseover mouseout", fn);
types = types.split(" ");
var type, i = 0, namespaces;
while ( (type = types[ i++ ]) ) { <-- iterates thru 1 by 1
AddEventListener接受一个表示event.type的简单字符串。因此,您需要编写一个自定义函数来迭代多个事件。
这是在jQuery中通过使用.split(" ")处理的,然后在列表上迭代,为每种类型设置eventlistener。
// Add elem as a property of the handle function
// This is to prevent a memory leak with non-native events in IE.
eventHandle.elem = elem;
// Handle multiple events separated by a space
// jQuery(...).bind("mouseover mouseout", fn);
types = types.split(" ");
var type, i = 0, namespaces;
while ( (type = types[ i++ ]) ) { <-- iterates thru 1 by 1