阻止事件触发以更改复选框

时间:2016-06-03 13:56:34

标签: javascript jquery

我有一个复选框的两个事件处理程序。我想第一个处理程序,以防止第二个触发。这是一个例子:

$("#address_cb").change(function(event) {
    alert('foo');
    event.preventDefault();
    event.stopPropagation();
    return false;
});

$("#address_cb").change(function(event) {
    alert('should never display');
});

$("#address_cb").trigger("change");


https://jsfiddle.net/zxzzLkky/5/

我怎样才能实现它?

2 个答案:

答案 0 :(得分:4)

您需要使用Even.stopImmediatePropagation()

$("#address_cb").change(function(event) {
   alert('foo');
   event.preventDefault();
   event.stopImmediatePropagation(); //Works
   return false; //would call event.preventDefault() and event.stopPropagation() but not stopImmediatePropagation()
});

因为您的两个事件都在同一事件级别触发。 作为替代方案,你可能只为你的回调返回false,因为jQuery会关心其余的。

有关返回错误方法的差异,请参阅event.preventDefault() vs. return false

答案 1 :(得分:1)

尝试使用event.stopImmediatePropagation()而不是event.stopPropagation();.请正确测试。希望这项工作。参考 https://api.jquery.com/event.stopimmediatepropagation/

$("#address_cb").change(function(event) {
    alert('foo');
    event.preventDefault();
    event.stopImmediatePropagation();
    return false;
});