我可以使用jQuery删除内联事件处理程序吗?

我有一些带有onclick属性的HTML。 我想使用jQuery覆盖该属性。 有没有办法使用jQuery删除单击处理程序? 使用unbind不起作用 。

试试.removeAttr()函数:

 $(function() { $('a').removeAttr('onclick'); }); 

jsfiddle演示 。

一旦你摆脱了onclick属性,你可以附加你自己的点击处理程序。

 $("#theElement")[0].onclick = function() { whatever(); }; // -- or -- $("#theElement")[0].onclick = null; 

并不是jQuery会让标准的DOM函数和属性消失。 😉

在http://api.jquery.com/prop/中引用使用.removeAttr()删除内联onclick事件处理程序无法在Internet Explorer 8,9和11中实现所需的效果。为避免潜在问题,请使用.prop ()代替。

所以这可以做到

 $(function() { $('a').prop('onclick', false); }); 

有一个插件,但你应该只在你需要的时候这样做。 该插件为您提供了调用旧函数或完全忽略它的选项。

jQuery Override插件

 $(divElementObj).override('onclick', 'click', function(...)); 

试过给定的选项,但部分工作,因为他们删除了一个但不是全部。

相反,我尝试使用链接作为解决方法。 我使用的是ver 1.4.2。

 jQuery("selector") .removeAttr("onclick").removeAttr("onmouseout").removeAttr("onmouseover");