用另一个来阻止一个jQuery事件

时间:2011-06-09 11:30:08

标签: 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>

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

2 个答案:

答案 0 :(得分:5)

您可以使用jQuery中的event.stopImmediatePropagation()

$('.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

答案 1 :(得分:0)

$('.confirm').click(function() {     
return confirm('Are you sure?');
});

您还可以在点击事件中使用event.stopPropagation()来阻止进一步传播。