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的实际实现之间的差异,但是这一直在持续工作,所以我正在削减我的损失,并且一起工作。