【发布时间】:2014-10-29 12:41:14
【问题描述】:
如何为多种事件类型只触发一次事件处理程序?
$("p").on("click touchend", function(e) {
console.log( "<p> was clicked" );
});
这个处理程序在某些设备上被调用了两次——第一次是为“touchend”事件(或“touchstart”例如——在这种情况下无关紧要),然后这个处理程序再次为“click”事件自动触发。
它像"click" && "touchend" 一样工作,但我希望它像"click" || "touchend" 一样工作。
是否有一种简单的方法可以在触发“touch(start/end)”时调用“click”处理程序,反之亦然?我想出的唯一解决方案是如果e.type 是“touchend”,则取消绑定“click”事件。
我发现.on("click touchend") 应该只适用于集合中的一个事件,但我检查过它被触发了两次,至少在少数移动设备上,所以你有更好的解决方案来解决这个问题?
【问题讨论】:
-
尝试添加
return false;或e.preventDefault()。可能是冒泡问题 -
这段代码是在迭代器还是循环中?
标签: javascript jquery web-deployment jquery-events