我可以使用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");