2014-10-17 78 views
0

我已經在我的應用程序中設置了一個swipeleft事件來在表單的字段之間移動。所有的字段都是動態生成的,所以我不在頁面之間交換,我正在清理並重新生成所有的DOM元素。問題在於,每次我在頁面上滑動時,或者在頁面上觸摸或點按任何內容時,滑動事件都會觸發。JQuery Mobile刷卡事件只觸發每隔一次刷卡

下面是設置了事件的代碼:包含信息的用戶可以從挑選

$(document).delegate("#scorePage", "pageshow", function() { 
    $.event.special.swipe.scrollSupressionThreshold = 10; 
    $.event.special.swipe.horizontalDistanceThreshold = 30; 
    $.event.special.swipe.durationThreshold = 500; 
    $.event.special.swipe.verticalDistanceThreshold = 75; 
    $('#divFoo').on("swipeleft", swipeLeftHandler); 
    $('#divFoo').on("swiperight", swipeRightHandler); 
    tableCreate(traits[0].keyboardID); 
}); 

爲背景,tableCreate是把一個動態生成的表到divFoo。以下是事件代碼本身:

function swipeLeftHandler() { 
    $("#divFoo").empty(); 
    traitIndex++; 
    tableCreate(traits[traitIndex].keyboardID); 
} 

爲什麼我的刷卡事件只發射每個其他時間沒有在頁面上刷卡?

現在主要在Android上進行測試,如果這有所影響。

編輯我使用jQuery Mobile版1.4.4

+0

你正在使用哪個版本?將_swipe_監聽器附加到'pageshow'中是不正確的,它們將被複制。 – Omar 2014-10-17 16:34:03

+0

@Omar感謝您指出,這是有道理的。如果我附加的元素在鏈接到index.html的單獨的html文件中,我仍然可以使用'deviceready'來附加這些處理程序? – ScoobyDrew18 2014-10-17 17:20:03

+0

你在使用科爾多瓦嗎?它應該是這樣的http://stackoverflow.com/a/25542805/1771795爲重寫刷卡默認值,它應該被包裹在'mobileinit'事件中並放置在jQuery.js之後和JQM.js之前 – Omar 2014-10-17 21:07:50

回答

0

我只需我自己的滾動實施這些事件的想出解決這個問題的方法。有一個關於如何做類似的東西在這裏的一些示例代碼:

https://snipt.net/blackdynamo/swipe-up-and-down-support-for-jquery-mobile/

如果任何人使用此代碼來解決我同樣的問題,一定要注意,物品正在實施swipeup和swipedown所以你將有以適應它。最後,我並不完全確定這段代碼和swipeleft和swiperight的實際實現之間的差異,但是這一直在持續工作,所以我正在削減我的損失,並且一起工作。