如何防止一个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没有帮助。
感谢 彼得
您可以使用event.stopImmediatePropagation()
阻止所有后续处理程序被触发。
这工作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()
已弃用。
处理程序总是按照它们绑定的顺序被解雇。所以在这种情况下,第一次事件被触发时,这两个处理程序都会被调用。另外,'.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);
}
这不等同。 OP使用事件委托,您将处理程序直接绑定到元素。 –
这是等同的。 .on()像.live()那样委托事件。事实上,.live()已被弃用,转而使用.on(): http://api.jquery.com/on/(跳转到“直接和委托事件”) – hunterloftis
是的,我知道你可以使用'.on',但你没有这样做;) –
据透露,'.live()'被弃用。 – ThiefMaster
只有最新的jQuery,我正在运行一个较旧的应用程序。 –
@FelixKling当他们真正工作时,你能否停止评论每个人的答案?谁在乎它是否是重复的,有数百个问题,我只是没有找到任何我自己! –