Javascript 将事件绑定到两个函数并在一个函数内解除绑定时

Javascript 将事件绑定到两个函数并在一个函数内解除绑定时,javascript,jquery,Javascript,Jquery,将事件绑定到两个函数并在一个函数内解除绑定时 这两个功能是否都保证由事件触发? 或者,是否应该首先调用具有unbind事件的函数,然后该事件同时解除两个函数的绑定,而第二个函数永远不会被调用 我做了一个提琴,看起来这两个函数只调用一次,这正是我所需要的,但它保证总是这样吗 有没有办法只解除当前正在执行的函数与事件的绑定?这样每个函数都会自动解除绑定 $('div').bind('click',function(){ $('div').unbind('click'); $('bod

将事件绑定到两个函数并在一个函数内解除绑定时

这两个功能是否都保证由事件触发? 或者,是否应该首先调用具有unbind事件的函数,然后该事件同时解除两个函数的绑定,而第二个函数永远不会被调用

我做了一个提琴,看起来这两个函数只调用一次,这正是我所需要的,但它保证总是这样吗

有没有办法只解除当前正在执行的函数与事件的绑定?这样每个函数都会自动解除绑定

$('div').bind('click',function(){
    $('div').unbind('click');
    $('body').append('Fired First Bind Event!<br/>');
});
$('div').bind('click',function(){
    $('body').append('Fired Second Bind Event!<br/>');    
});
$('div').bind('click',function(){
$('div')。解除绑定('click');
$('body').append('First Bind Event!
'); }); $('div').bind('click',function(){ $('body').append('Fired Second Bind Event!
'); });
两者都将触发,因为事件将继续传播到已在项目上设置的其他单击。如果您再次单击该项目,两个项目都不会触发,因为它们都已取消设置。

您可以尝试以下操作:

$('div').bind('click', first);
$('div').bind('click', second);

function first() {
    $('div').unbind('click', first);
    $('body').append('Fired First Bind Event!<br/>');
}

function second() {
    $('body').append('Fired Second Bind Event!<br/>');    
}
$('div').bind('click',first);
$('div').bind('click',second);
函数优先(){
$('div')。解除绑定('click',first);
$('body').append('First Bind Event!
'); } 函数第二(){ $('body').append('Fired Second Bind Event!
'); }

这将仅解除第一个函数的绑定。

因此,假设这两个函数都将使用此代码触发一次且仅触发一次是不可取的?事实上,我认为您可以通过触发
event.stopPropagation()
来抑制第二个函数。谢谢,这很有意义,但我必须确保。很好!就可读性和耦合性而言,这实际上可能是一个更好的解决方案(假设有第三个函数绑定到该事件,不应该解除绑定!)。