2013-05-07 97 views
1

我运行了以下内容:解除绑定('点击')移除onclick?

$("#myelement").unbind('click'); 

当我认为在VS.NET 2010监视窗口$("#myelement")[0].onclick,我看到"{...}".

应该unbind('click')删除onclick事件?

+1

@MohammadAdil权,但附有onclick事件处理程序= “...” 被解放与'.unbind()'?这是一个问题(至少我理解它的方式) – 2013-05-07 18:27:25

+0

它消除了它们,因为单击元素不会触发之前绑定的任何函数。 jQuery如何在“幕后”做这件事并不重要,但它可能不会将'onclick'设置为null。 – 2013-05-07 18:28:55

+0

检查了这一点:http://jsfiddle.net/AwPnn/ – Aristos 2013-05-07 18:32:09

回答

2

不,它不会删除onclick事件,如演示here所示。

绑定事件存储在jQuery对象中,因此,unbind只是从jQuery对象中移除事件。

unbind将仅移除使用jQuery bind方法和/或不推荐使用的live方法附加的事件。

如果要重置使用jQuery实际onclick事件,那么就请使用下列方法之一:

$('#myelement').attr('onclick',''); 
$('#myelement').removeAttr('onclick'); 

如果你想添加一个事件,具体的元素onclick(不绑定jQuery的单击事件),那么只需使用以下命令:

$('#myelement').attr('onclick','alert(\'hello\')'); 

我强烈disadvise上面的方法虽然因为我相信你可以欣赏,增加了功能,这将是一个有点棘手逃避所有的报价...


另外,我可能会建议你使用onoff jQuery的方法,而不是。虽然这些仅是jQuery中的较新版本可用时,它们是优选的方法如所述的位置:

在jQuery 1.7中,。对()方法是用于 事件处理程序安装到一个文件的优选方法。对于早期版本, .bind()方法用于将事件处理程序直接附加到 元素。处理程序被附加到jQuery对象的当前选定元素 中,所以这些元素必须存在于发生.bind()的调用 处。要获得更灵活的事件绑定,请参阅.on()或.delegate()中事件委托的讨论 。

更多信息请参阅以下内容:

  1. jQuery Attr Method
  2. jQuery Bind Method
  3. jQuery Unbind Method
  4. jQuery On Method
  5. jQuery Off Method
+0

做完上述重置后,$('#myelement')。click(function(){...});努力与onclick联系新事件? – 4thSpace 2013-05-07 18:46:24

+0

@ 4thSpace当然,它确实是 – 2013-05-07 18:47:09

+0

@ 4thSpace Ooo等等,对不起,我误解了你所说的。不是这样,我会更新我的回答 – 2013-05-07 18:47:51

2

试试这个:

$('#myelement').attr('onclick','').unbind('click'); 
+0

或者我们可以使用$('#myelement')。 removeAttr(的 'onClick'); – Milson 2013-05-07 18:34:22

+0

我发现它从{...}更改为“”。它似乎工作。 – 4thSpace 2013-05-07 18:35:32