1

可能重复:
如何防止其他事件处理程序,从第一个处理程序,在 jQuery

我有两个这样的 jQuery 函数:

$('#click-me').live('click', function(event) {
    alert("Hello World");
    event.preventDefault();
});
$('#click-me').live('click', function(event) {
    alert("Goodbye World");
});

听起来可能很奇怪,但是假设我不希望第二个功能(执行“再见世界”警报),我该怎么做?event.preventDefault 没有帮助。

谢谢彼得

4

3 回答 3

5

您可以使用它event.stopImmediatePropagation()来防止所有后续处理程序被触发。

于 2012-12-30T21:27:03.633 回答
1

尝试类似的东西

var goodbyeCallback = function(event) {
   alert("Goodbye World");
}

$('#click-me').live('click', function(event) {
    alert("Hello World");
    $('#click-me').die('click', goodbyeCallback);
});
$('#click-me').live('click', goodbyeCallback);

回调触发时的顺序可能有问题;你不能把他们加入一个回调吗?

顺便说一句:jQuery 文档说它已.live()被弃用。

于 2012-12-30T21:33:34.737 回答
1

而不是live()使用on()and off()

$('#click-me').on('click', canBeOnOrOff);

function canBeOnOrOff(event) {
  alert('goodbye world');

  // this removes the event handler from the click event
  $('#click-me').off('click', canBeOnOrOff);
}
于 2012-12-30T21:33:52.290 回答