这似乎是一个简单的解决方案,但当谈到 iPad 上的触摸功能时,我有点菜鸟。
我理解我需要做什么的概念,只是不知道语法。
问题:我有一个页面充满了 DIV。这些 DIV 被包装在 iScroll4 包装器中。 iScroll 脚本设置得很好,如果您通过点击并移动链接来开始滚动页面,则该链接永远不会触发。
然而,我并没有那么优秀。因为我设置了一些 jQuery 代码来为“touchstart”上的 DIV 之一设置动画,但问题是,即使我滚动或拖动手指,动画也会在我不希望的情况下触发。
我需要设置超时或取消 touchstart。或者在 touchend 上触发动画,但如果将手指拖动 x 像素量并将该触摸转换为触摸移动,则取消触摸。
有人知道该怎么做吗?提前致谢!
亚历克斯
编辑:这是我当前的 jQuery 代码。如果我将手指拖动 X 个像素,我需要取消触发动画功能。可能使用 pageX 和 pageY?
$('tr#recent').live("touchend click", function () {
$(".modalWindow").css('display', 'block').animate({
height:716,
top:15,
left:15,
width:995
}, 300);
});
雅虎的 Scrollview 是这样实现的:http://developer.yahoo.com/yui/3/examples/scrollview/scrollview.html
var content = scrollView.get("contentBox");
content.delegate("click", function(e) {
// Prevent links from navigating as part of a scroll gesture
if (Math.abs(scrollView.lastScrolledAmt) > 2) {
e.preventDefault();
Y.log("Link behavior suppressed.")
}
}, "a");
看看他们如何检查“最后滚动”的数量,然后在您将手指拖动一定距离时取消链接行为......但我没有使用 Scrollview......
最佳答案
如果您想停止触发默认事件,则需要取消它。阅读 jQuery event object ,尤其是 event.preventDefault() 和 event.stopPropagation()。另一个技巧是在函数末尾添加 false,所以...
$( 'div' ).bind( 'touchstart', function(e)
{
// do some funky stuff
return false; // this'll cancel the default behaviour of the event
});
通常,如果您想做更多的事情,您可以为“touchmove”添加另一个绑定(bind)来获取移动的 X 和 Y。
关于jquery - iPad 版 Safari 上的 Web 应用程序 : Cancel touchstart on touchmove,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6507589/