2011-08-03 58 views
8

我希望你今天很好,我正在嘗試計算移動網站上的滑動距離(觸摸手勢),你將如何計算出用戶在屏幕上滑動了多少像素?在jQuery-mobile中計算滑動距離

$('.cmButtons').live('swipeleft',function(){ 
    console.log("swiped left"); 
}); 
+1

我只知道如何做到這一點不使用jQuery,所以這不是一個答案,但也許是一個線索。在touchStart事件中建立滑動的起始x,y座標。在那裏,您也可以將startPos分配給endPos,默認結束位置。在touchMove監聽器中,您不斷注意當前座標,並將這些座標作爲endPos座標。 touchEnd你注意到了startPos和endPos之間的區別。因此,無論是jQuery在其swipeLeft事件中公開startPos和endPos座標,還是必須連接自己的插件才能在jQuery之外完成此操作。 – Tim

+0

請問你可以添加一些示例代碼嗎?我明白,它可能會略有不同,但我想用你的代碼作爲基礎開始:) – Xavier

+1

相關:http://stackoverflow.com/questions/3183872/does-jquery-preserve-touch-events-properties和http:// stackoverflow。com/questions/4755505/how-to-recogized-touch-event-using-jquery-for-ipad-safari-browser-is-it-possible –

回答

2

不知道這是否有助於但Beta 2中,他們已經發布了一些額外的刷卡功能

配置刷卡事件閾值增加

有是一個數字在 jquery.mobile.event.js滑動代碼中的硬編碼常量。對於需要調整 這些常數以允許更大的垂直位移並且仍然註冊滑動的開發者,這個新功能允許它們被調整。感謝 爲mlitwin的貢獻。

  • scrollSupressionThreshold(默認:10px的) - 比這個水平 位移更多,我們將抑制滾動
  • durationThreshold(默認:1000毫秒) - 比這更多的時間,這是不是一個刷卡
  • horizo​​ntalDistanceThreshold(默認:30px) - 水平滑動 位移必須超過此值。
  • verticalDistanceThreshold(默認值:75px) - 滑動垂直位移必須小於此值。
+0

最後,我不得不在jQuery Mobile中編寫一個自定義偵聽器,該觸發器會在開始點擊時觸發 - 輕掃和輕敲 - 滑動事件。感謝您的提交。這讓我開始在正確的地方。 – Xavier

+0

np。你也可以分享你自定義的聽衆嗎?也可以幫助其他人 –

2

我無法弄清楚如何從該方法中獲取距離,所以我只是在我的頁面上設置一個新的全局閾值。

//Override the default horizontalDistanceThreshold of 30 
$.event.special.swipe.horizontalDistanceThreshold = 200; 

我使用的是舊版本的jQM(v1.0仍...),所以這可能已經改變了。如果您剛開始查找滑動事件,在源代碼中很容易找到。