如何解除绑定并再次绑定

时间:2011-04-29 13:16:12

标签: events bind jquery

$("#archive").click(function(event){
        /*do something*/
});

$('#archive2').unbind('click',event);

我有这个我解除绑定的点击功能。但是,当我点击某个按钮时,我想再绑定它。

$("#archive").bind("click",event);

我使用此代码再次绑定,但它似乎不起作用。任何建议或解决方法?

5 个答案:

答案 0 :(得分:6)

您必须保留对该函数的引用(而不是传递匿名函数):

function handler() {
    // do something
}

$("#archive").click(handler); // bind the first time
$("#archive").unbind('click', handler); // unbind
$("#archive").click(handler); // bind again

在您的情况下不确定event是什么,但如果它是传递给事件处理程序的event对象,那么将它传递给unbind和{{}是没有意义的1}}。

答案 1 :(得分:3)

jQuery 1.7开始,您应该使用onoff来处理所有事件处理程序:

var handler = function() {
  alert('The quick brown fox jumps over the lazy dog.');
};
$('#foo').on('click', handler);
$('#foo').off('click', handler);

答案 2 :(得分:0)

为什么在事件处理程序中没有布尔值和if语句?

答案 3 :(得分:0)

您需要为函数提供一个处理程序,以便您可以绑定/取消绑定它。 (还允许您在同一事件中绑定/取消绑定特定事件处理程序:

var handler = function() {
  alert('The quick brown fox jumps over the lazy dog.');
};
$('#foo').bind('click', handler);
$('#foo').unbind('click', handler);

(从http://api.jquery.com/unbind/使用)

答案 4 :(得分:0)

试试这个:

var closeHandle = function () {
      alert('close');        
};

function addClick() {       
         $("#btnTest").unbind('click').click(closeHandle);          
}