我遇到了 touchSwipe.js 没有触发 a 元素上的滑动事件的问题。我已经进行了研究,很快就找到了answer。
这个解决方案非常有效,除了锚定停止表现得像他们应该表现的那样......例如打开网页,或者在JS处理时触发点击事件。
我想我错过了一些非常重要的东西。有人可以澄清吗?谢谢!
答案 0 :(得分:3)
你必须重置被排除的元素
$("#test").swipe({
swipe: function(/* stuff */){
// do some stuff and more
},
// and do even more stuff
// at the end:
excludedElements: ""
});
它适用于我的网站。 我现在遇到的唯一问题是在默认的android浏览器元素中使用jQuery $(" a.stuff")无效。点击(。 其余的工作正常。
答案 1 :(得分:1)
答案隐藏在上面的答案中,因为它是一个组合。 能够点击/点按链接,但也可以刷你的菜单, 你需要使用可能为75的滑动阈值(不是零!) 并确保没有排除“A”元素:
$('nav#access , .bodywrapper').swipe({
swipe: function(event, direction, distance, duration, fingerCount, fingerData) {
// do your stuff.....
},
threshold: 75,
excludedElements: ""
});
答案 2 :(得分:0)
没有代码,我无法分辨到哪里,但听起来你有一个e.preventDefault
或return false
或e.stopPropagation
阻挡了javascript中某处的正常行为,也许是滑动事件的结束,这对于大多数函数来说都是正常的和预期的,因为你想要滑动,而不是去其他地方,这就是默认情况下排除元素的原因,因为touchSwipe基本上覆盖了默认行为。
但我的问题是你真的希望元素既可点击又可刷卡? 如果是这样,请查看Tap vs Swipe,在您的滑动处理程序中,您可以放置以下内容:
$("#test").swipe( {
tap:function(event, target) {
//click events go here
},
threshold:75
});
或者,如果您包含jquery.ui.ipad.js plugin,则可以在touchSwipe对象的子项上拾取标准jQuery鼠标事件。 (同样来自Tap vs. Swipe页面,其中有示例,请查看。)
另外,或许可以查看touchSwipes' defaults,您可以在其中为longTapThreshhold,doubleTap,tap和triggerOnTouchLeave等设置各种值和处理程序。