jquery - 防止一个 jQuery 事件与另一个事件发生

标签 jquery events onclick event-handling

为了整理我的 jQuery,我希望使用事件处理程序为各种元素创建一个“确认”类,这样我就可以触发一个快速确认框,以便用户可以确认他们的操作。

如果用户在确认框中单击“取消”,则应取消任何后续事件,但这应该不是是永久性的,例如再次触发该事件应弹出确认并重新开始。如果我能解决这个问题,我可以让任何敏感操作都有一个确认问题,以确保用户有意点击。

例如:

$('.confirm').click(function() {
    if(!confirm('Are you sure?')) {
        // Stop any other click events on $(this) from happening this instance.
    }
});

$('.clicker').click(function() {
    alert('it happened');
});

<a class="clicker confirm">Click me</a>

期望的输出是取消确认将取消点击事件,但不会完全禁用它。

最佳答案

您可以使用event.stopImmediatePropagation()来自 jQuery:

$('.confirm').click(function(event) {
    if(!confirm('Are you sure?')) {
        event.stopImmediatePropagation();

        // Stop any other click events on $(this) from happening this instance.
    }
});

$('.clicker').click(function() {
    alert('it happened');
});

看看test case on jsFiddle

关于jquery - 防止一个 jQuery 事件与另一个事件发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6292093/

相关文章:

javascript - 防止触摸设备上的 mousemove 事件

javascript - 将回调函数传递给原型(prototype)

javascript - 为什么js函数不会永久改变html代码?

javascript - php无需单击按钮或提交即可获取输入值

javascript - 百分比倒计时

javascript - 当 draggable 离开嵌套的 sortable 时调用 Drop

javascript - onclick div 保存输入值

jquery - 如何使 jQuery UI Accordion 标题框更小?

python - wxpython 的 wxEvent.Skip() 解释

JavaScript 停止 "this"关键字在函数调用时发生变化?