2011-04-29 67 views
2
$("#archive").click(function(event){ 
     /*do something*/ 
}); 

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

我有这个点击功能,我解除绑定。不过,当我点击某个按钮时,我想再次绑定它。如何解除绑定并再次绑定

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

即时通讯使用此代码再次绑定,但它似乎不工作。任何建议或解决方法?

+0

使用编程语言或技术名称标记问题比较好,只有在添加一些特定标记之后 – 2011-04-29 13:19:33

+1

是'#archive2'这是一个错字 – naiquevin 2011-04-29 13:19:53

回答

0

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

6

你必须保持对函数的引用(而不是传递的匿名函数):

function handler() { 
    // do something 
} 

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

不知道什么是你的情况event,但如果它是传递给事件处理程序event对象那么将它传递给unbindbind是没有意义的。

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/使用)

+0

谢谢!完美地工作! – tep 2011-04-29 13:52:06

+0

@tep:不客气!看起来你是新来的 - 欢迎来到社区;请记住标记答案并投票出任何有用的帖子。 – KTF 2011-04-29 13:53:47

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);