2011-06-28 52 views
1

這似乎是一個簡單的解決方案,但當談到iPad上的這種觸摸工具時,我有點不解。用於iPad的Safari應用程序上的Web應用程序:取消touchmove的touchstart

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

問題:我有一個充滿DIV的頁面。這些DIV被包裝在一個iScroll4包裝中。 iScroll腳本設置得很好,如果您要開始通過點擊和移動鏈接來滾動頁面,鏈接永遠不會觸發。然而,我並不那麼好。因爲我設置了一些jQuery代碼來動畫其中一個DIV的「touchstart」,但問題是,即使我滾動或拖動我的手指,動畫也會在我不想要的時候觸發。

我需要設置超時或取消touchstart。或者觸發動畫,但是如果您拖動手指x像素並將該觸摸轉換爲觸摸移動,則取消觸摸。

有誰知道該怎麼做?提前致謝!

Alex

編輯:這是我目前的jQuery代碼。如果我拖動我的手指X像素量,我需要從發射取消動畫功能。可能使用pageX和pageY?

$('tr#recent').live("touchend click", function() { 
     $(".modalWindow").css('display', 'block').animate({ 
       height:716, 
       top:15, 
       left:15, 
       width:995 
      }, 300);    
    }); 

這裏是雅虎是怎麼做的與他們的滾動型: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」金額,然後取消鏈接的行爲,如果你拖動手指一定的距離。 ....但我沒有使用滾動查看....

回答

3

如果你想停止觸發默認事件,那麼你需要取消它。閱讀jQuery event object,尤其是event.preventDefault()和event.stopPropagation()。另一個技巧是添加假的函數結束,所以...

$('div').bind('touchstart', function(e) 
{ 
    // do some funky stuff 

    return false; // this'll cancel the default behaviour of the event 
}); 

通常情況下,如果你想要做一些更多的東西,你會添加其他綁定爲「touchmove」,以獲得X和運動的Y.

+0

將event.preventDefault放回到我的函數中並返回false,當釋放我的手指時,不會停止觸發動畫。 – Alex

+1

沒錯,所以你需要做的是將一個事件綁定到mousemove和touchmove,在這個事件中,你接着調用stop()給動畫事件。 –

+0

這不起作用,因爲您無法停止尚未開始的動畫。我只能在它被解僱後停止動畫,並且在那一點上它對我沒有好處。雖然我現在比以前更接近解決方案...... – Alex