解除绑定后使用绑定

时间:2013-08-27 09:58:31

标签: javascript jquery html click

我找到了如下所示的代码。

Html代码:

<div id="myButton">Click Here</div>

JQuery代码:

$("#myButton").unbind("click").bind("click",function(){
   alert("Working")
});

在绑定元素之前,取消绑定(“点击”)需要什么?

如果不使用unbind,它也可以工作。如下所示

$("#myButton").bind("click",function(){
   alert("Working")
});

哪一个最好?有什么区别?

4 个答案:

答案 0 :(得分:2)

这只能确保没有附加其他click事件侦听器。因此,您的处理程序将是单击#myButton

时唯一的处理程序

编辑:为@ T.J。 Crowder在评论中指出,unbind()不会以与调用bind()不同的方式影响处理程序。

值得注意的是:

  

从jQuery 1.7开始,.on()和.off()方法首选在元素上附加和删除事件处理程序

(摘自jQuery.unbind() doc)。事实上,unbind()方法off() is implemented internally

考虑一下:

$("#myButton").bind('click', function () {
  console.log('click 1');
});

$("#myButton").unbind('click').bind('click', function () {
  console.log('click 2');
});

// When clicked, prints "click 2"

对战:

$("#myButton").bind('click', function () {
  console.log('click 1');
});

// note: no unbind here
$("#myButton").bind('click', function () {
  console.log('click 2');
});

// When clicked, prints "clicked 1" followed by "clicked 2"

答案 1 :(得分:0)

通过解除元素上的“click”事件,您实际上正在删除与该元素关联的所有onclick事件。即如果你的html表单的输入字段有一个onclick事件并且它调用了一个函数,它将被解除绑定。在解除绑定之后,您将绑定另一个单击事件,该事件将调用您的函数onclick该元素。

答案 2 :(得分:0)

$("#myButton").unbind("click").bind("click",function(){
   alert("Working")
});

jQuery bind()函数用于将事件处理程序附加到元素,而unbind()用于从元素中分离现有的事件处理程序。请参阅演示http://www.mkyong.com/wp-content/uploads/jQuery/jQuery-bind-unbind-example.html

答案 3 :(得分:0)

没有这个html代码的url,我不确定#myButton元素是否附加了其他click处理程序,但可以肯定的是unbind方法删除了此处的所有处理程序我认为作者只想触发一次点击事件。 此外,您可以查看浏览器的调试检查器上是否还有其他事件处理程序。 希望这会对你有所帮助。