当用户点击某个链接时,我想向他们展示一个确认对话框。如果他们点击"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/