unbind('click')是否删除了onclick?

时间:2013-05-07 18:23:02

标签: jquery

我正在运行以下内容:

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

当我在VS.NET 2010 Watch窗口中查看$("#myelement")[0].onclick时,我看到"{...}".

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

2 个答案:

答案 0 :(得分: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\')');

我强烈反对上述方法,但我相信你可以欣赏,添加一个功能会有点棘手逃避所有引用......


此外,我建议您使用onoff jQuery方法。虽然这些只在较新版本的jQuery中可用,但它们是这里所述的首选方法:

  

从jQuery 1.7开始,.on()方法是首选方法   将事件处理程序附加到文档。对于早期版本,   .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

答案 1 :(得分:2)

试试这个:

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