要在taphold上捕获哪些事件

时间:2014-06-05 22:22:05

标签: jquery-mobile

我在元素上监听taphold事件,然后打开一个包含操作选择的弹出窗口。问题是,在弹出窗口打开后,会触发新的鼠标/手指事件。所以我的解决方案是将所有后续的鼠标/手指事件捕获到touchend事件:

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(),然后打开弹出窗口。

我的问题是,我认为我过度捕捉事件。我不知道各种鼠标/手指事件的触发顺序。所以,如果有人可以帮我优化被困事件,我会很感激。

感谢。

1 个答案:

答案 0 :(得分:0)

我使用覆盖身体的屏幕完成了这一点,然后在touchend,mouseup和vmouseup上删除。