我在元素上监听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(),然后打开弹出窗口。
我的问题是,我认为我过度捕捉事件。我不知道各种鼠标/手指事件的触发顺序。所以,如果有人可以帮我优化被困事件,我会很感激。
感谢。
答案 0 :(得分:0)
我使用覆盖身体的屏幕完成了这一点,然后在touchend,mouseup和vmouseup上删除。