2012-12-30 47 views
5

有誰知道touchend事件爲什麼會在觸發事件期間觸發?這只是第二次發生。Touchend第二次觸碰touchshart

快速的代碼片段:

function touchstart (event) { 
    $(event.target).one('touchend', function() { 
     alert('fired'); 
    } 
} 

所以第一次這樣被激發它工作正常。第二次在touchstart上觸發警報。

http://jsfiddle.net/8SVFR/

編輯:

看起來這可能是一個iPhone問題僅

+0

我們在談論手機瀏覽器嗎? 在我的Android 4.1本地瀏覽器上工作得很好。 –

+0

在Android 4.1上,Chrome和Firefox(手機)也能正常工作。 –

+0

只有試圖在iPhone和它觸發的touchstart各地 – darylhedley

回答

5

原來......在一個touchend事件有一個警告火災造成的各種問題。當你點擊'ok'時,它觸發touchstart,以便下次觸摸元素時觸發器被觸發。幸運的是,我使用警報來檢查我的代碼 - 所以一旦刪除了,我的代碼就完美了!

+0

昨天晚上調試了這個問題 - 在Chrome中使用觸摸模擬效果很好,在iphone上觸發兩次回調。 – Paul

1

只需在setTimeout中將「touchend」處理程序的代碼放入0ms即可。像這樣:

$(someElement).on("touchend", 
function(){ 
    setTimeout(function(){ 
    /*Your code*/ 
    }, 0); 
});