如何防止一个jQuery函数被调用

问题描述:

可能重复:
How to prevent other event handlers, from first handler, in jQuery如何防止一个jQuery函数被调用

我有两个jQuery的功能是这样的:

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

这可能听起来很奇怪,但是让我们说我不希望第二个函数(与“再见世界”警报执行),我会怎么做? event.preventDefault没有帮助。

感谢 彼得

+0

据透露,'.live()'被弃用。 – ThiefMaster

+0

只有最新的jQuery,我正在运行一个较旧的应用程序。 –

+0

@FelixKling当他们真正工作时,你能否停止评论每个人的答案?谁在乎它是否是重复的,有数百个问题,我只是没有找到任何我自己! –

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

+1

这工作acharm。我会尽可能标记为已回答!谢谢你有一个新的一年:) –

尝试像

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 documentation.live()已弃用。

+0

处理程序总是按照它们绑定的顺序被解雇。所以在这种情况下,第一次事件被触发时,这两个处理程序都会被调用。另外,'.live'和'.off'不能一起工作。 –

代替live()使用on()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); 
} 
+0

这不等同。 OP使用事件委托,您将处理程序直接绑定到元素。 –

+0

这是等同的。 .on()像.live()那样委托事件。事实上,.live()已被弃用,转而使用.on(): http://api.jquery.com/on/(跳转到“直接和委托事件”) – hunterloftis

+0

是的,我知道你可以使用'.on',但你没有这样做;) –