Safari for iPad上的Web应用程序:取消touchmove上的touchstart

时间:2011-06-28 13:56:16

标签: jquery ipad scroll touch

这看起来似乎是一个简单的解决方案,但是当我谈到iPad上的触控内容时,我有点像n00b。

我理解我需要做的概念,我只是不知道语法。

问题:我的页面上装满了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");

看看他们如何检查“lastscrolled”数量,然后在你将手指拖动一定距离时取消链接行为.....但我没有使用Scrollview ....

1 个答案:

答案 0 :(得分:3)

如果要停止触发默认事件,则需要取消它。阅读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'添加另一个绑定来获得运动的X和Y.