jQuery unbind无法正常工作

时间:2014-06-23 17:40:00

标签: jquery

在单击某个函数时尝试解除绑定,然后在完成加载后重新绑定它。 到目前为止绑定工作。但是unbind什么都不做。 以下是我尝试过的不同功能。到目前为止都没有工作。

function disableswitch(){
 $('.profilebutton').unbind("click", function(){
  profilebuttonswitch(this.value);
 });
}
function disableswitch(){
 $('.profilebutton').unbind("click", function(){
   profilebuttonswitch();
 });
}
function disableswitch(){
 $('.profilebutton').unbind("click", profilebuttonswitch);
}

有人知道为什么这些可能不适合我吗?

2 个答案:

答案 0 :(得分:2)

只有三分之一的尝试可能有效。

当您.unbind(或稍后的jQuery版本.off)处理程序时,您必须提供任何函数参数,或者您必须提供完全相同的函数引用。已传递给.bind(或.on)。

将引用传递给看起来相同的函数不起作用,因为它没有相同的引用。

答案 1 :(得分:1)

您必须使用以下格式引用先前绑定的函数:

$( "#foo" ).bind( "click", handler );
$( "#foo" ).unbind( "click", handler );

引自http://api.jquery.com/unbind/

$( "#foo" ).bind( "click", function() {
  alert( "The quick brown fox jumps over the lazy dog." );
});

// Will NOT work
$( "#foo" ).unbind( "click", function() {
  alert( "The quick brown fox jumps over the lazy dog." );
});
  

即使两个功能在内容上相同,它们也是如此   单独创建,因此JavaScript可以自由地保持它们不同   功能对象。要取消绑定特定的处理程序,我们需要一个引用   对于那个功能,而不是一个碰巧做同样的事情   的事情。