首页 > 解决方案 > 在点击或触摸时暂停事件,然后在 jQuery 中做一些工作后“重启”状态事件?

问题描述

希望实现一种专门跟踪点击的方法 - 如果有更好的方法可以做到这一点,但我真的很想知道如何简单地延迟所有正常发生的相同事件传播,直到某些功能完成 - 想法?

$(this).on('click touch', function(event){
     event.preventDefault();
     l("clicked ");

     setTimeout(function(){
         l('redispatching event');
         event.target.parentNode.dispatchEvent(event); // fails here?
     }, 500);

     return false;
});

编辑是一个更具体的例子。

标签: javascriptjquery

解决方案


像往常一样使用event.preventDefault(),然后当您想要冒泡时,将相同的事件直接发送到元素的父级。

$('a, button').on('click touch', function(event){
        event.preventDefault();
        event.cancelBubble = true;
        doSomething(); // Probably asynchronous
        event.cancelBubble = false;
        event.target.parentNode.dispatchEvent(event);
        return false;
})

推荐阅读