【发布时间】:2013-08-14 06:53:53
【问题描述】:
js 也支持触摸手势。我正在努力防止默认操作。当我设置event.preventDefault 或event.gesture.preventDefault() 甚至在锤子上应用参数{prevent_defaults: true } 时,它只会触发锚点上的默认操作。我该如何防止这种情况和/或我做错了什么?!
代码sn-p;
function initializeNavigation() {
$("nav").hammer({prevent_defaults: true }).on("tap", "a", function(event) {
event.preventDefault();
event.gesture.preventDefault();
var target = $(this.hash);
scrollToTarget(target, 1200);
// if there is an open detailItem then close it.
if (detailItemOpen) {
$("div." + detailItemOpen).slideUp();
}
})
if (Modernizr.mq('only screen and (max-width: 767px)')) {
initializeMobileMenuAndSetButton();
}
}
【问题讨论】:
-
虽然不是完全重复,但这个答案可能会有所帮助:stackoverflow.com/questions/10714868/…
-
我没有得到你的答案,因为它也发生在 Firefox 中。它与 Hammer.js 和事件有关。当我只使用点击事件时,一切都可以在带有鼠标的设备上正常运行。
-
没错,在这里进行了长时间的讨论。它是关于 stopPropagation(),但也适用于 preventDefault():github.com/EightMedia/hammer.js/issues/237
-
啊哈好吧。我读了题目。因此,点击与点击事件不同。这就是为什么仍然触发默认行为,单击锚点。我可以使用选择的解决方案。我绑定了第二个 on-method .on("click", funtion(event) { event.preventDefault()}
-
您最后的评论应该是接受的答案 myradon ;)
标签: javascript jquery events hammer.js