0

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

html代码:

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

jQuery代码:

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

在绑定元素之前unbind("click")需要什么?

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

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

哪个最好?有什么不同?

4

4 回答 4

2

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

编辑:正如@TJ Crowder 在评论中指出的那样,unbind()不会影响以不同于调用的方式附加的处理程序bind()

还值得注意的是:

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

(摘自jQuery.unbind() 文档)。其实是通过方法unbind() 内部实现off()的)。

考虑:

$("#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"
于 2013-08-27T10:01:08.663 回答
0

通过取消绑定元素上的“点击”事件,您实际上删除了与该元素关联的所有 onclick 事件。即,如果您的 html 表单的输入字段有一个 onclick 事件并且它调用了一个函数,那么它将是未绑定的。取消绑定后,您将绑定另一个单击事件,该事件将调用您的函数 onclick 该元素。

于 2013-08-27T10:04:05.873 回答
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

于 2013-08-27T10:08:29.970 回答
0

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

于 2013-08-27T10:13:25.700 回答