我有一个复选框的两个事件处理程序。我想第一个处理程序,以防止第二个触发。这是一个例子:
$("#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/
我怎样才能实现它?
答案 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;
});