jquery - iPad 版 Safari 上的 Web 应用程序 : Cancel touchstart on touchmove

标签 jquery ipad scroll touch

这似乎是一个简单的解决方案,但当谈到 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/

相关文章:

php - SELECT * FROM $_POST[] - PHP mySQL 格式化

ios - 如何禁止 CALayers 响应 HitTest ?

iOS 7 的 canDisplayBannerAds 和旋转?

javascript - contenteditable div 内有很多 span 标签

javascript - 用于对数据进行排序的多个 (2) 哈希 URL 参数

php - 如何将复选框id添加到模态框?

iphone - 适用于 iPad 的网格状控件

jquery - 数据表.net ScrollX |标题和数据列宽度问题

javascript - 如何使用javascript确定响应式视差站点中元素的完成滚动位置

jQuery Aristo 主题删除了工具提示的样式