javascript - 取消后如何继续事件传播?

标签 javascript dom event-propagation

当用户点击某个链接时,我想向他们展示一个确认对话框。如果他们点击"is",我想继续原来的导航。一个问题:我的确认对话框是通过返回一个 jQuery.Deferred 对象来实现的,该对象仅在/如果用户单击"is"按钮时才解析。所以基本上确认对话框是异步的。

所以基本上我想要这样的东西:

$('a.my-link').click(function(e) {
  e.preventDefault(); e.stopPropogation();
  MyApp.confirm("Are you sure you want to navigate away?")
    .done(function() {
      //continue propogation of e
    })
})

当然,我可以设置一个标志并重新触发点击,但这太麻烦了。有什么自然的方法可以做到这一点?

最佳答案

令我惊讶的是,以下是在 Chrome 13 中实际运行的代码片段。

function handler (evt ) {
    var t = evt.target;
    ...
    setTimeout( function() {
        t.dispatchEvent( evt )
    }, 1000);
    return false;
}

这不是很跨浏览器,也许将来会修复,因为感觉像是安全风险,恕我直言。

如果取消事件传播,我不知道会发生什么。

关于javascript - 取消后如何继续事件传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811959/

相关文章:

javascript - javascript中+=和=+的区别

javascript - 类型错误 : Cannot read property '0' of undefined. Jasmine

javascript 解除绑定(bind) dom 事件

javascript - 如何停止传播绑定(bind)函数而不是整个事件?

c# - 拿走一切,除非它看到 foo

javascript - 使用 jQuery 获取 iframe 的 HTML 内容

javascript - 如何确保在 HREF 触发之前下载并显示图像?

javascript - AngularJS:如何停止 ng-click 的事件传播?

javascript - d3 : disabled "dblclick.zoom" default behaviour returns after using custom zoom

javascript - 更新单元格注释时出现的可操作性能问题