2014-06-05 53 views
0

我在一個元素上監聽taphold事件,然後打開一個彈出窗口並選擇操作。問題是,在彈出窗口打開後,觸發新的鼠標/手指事件。所以我的解決辦法是捕獲所有後續的鼠標/手指事件,直到touchend事件:哪些事件要在taphold上捕獲

function tapholdTriggered() { 

    $.mcm.mobile.$d.on('vclick.taphold vmousedown.taphold click.taphold mousedown.taphold tap.taphold taphold.taphold touchstart.taphold touchmove.taphold', function (event) { 

     event.preventDefault(); 
     event.stopImmediatePropagation(); 

    }) 
        .on('touchend.taphold', function (event) { 

         event.preventDefault(); 
         event.stopImmediatePropagation(); 

         $.mcm.mobile.$d.off('.taphold'); 

        }); 

} 

所以基本上我會聽的taphold事件,調用tapholdTriggered(),然後打開彈出窗口。

我的問題是,我認爲我過度陷害事件。我不知道各種鼠標/手指事件是以什麼順序觸發的。所以如果有人能幫助我優化被困事件,我會很感激。

謝謝。

+0

檢查此http://jsfiddle.net/Palestinian/Ws853/ – Omar

+0

這是我正在嘗試做的。它可以工作,但正如我所說,由於我不知道訂單,所以我可能會陷入困境的事件:http://jsfiddle.net/Ws853/10/ – maxmoore14

回答

0

我用屏幕覆蓋了身體,然後在touchend,mouseup和vmouseup上刪除了這一點。