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

时间:2010-10-02 15:01:32

标签: javascript jquery

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

5 个答案:

答案 0 :(得分:20)

尝试.removeAttr()功能:

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

jsfiddle demo

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

答案 1 :(得分:8)

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

并不是jQuery会让标准的DOM功能和属性消失。 ; - )

答案 2 :(得分:4)

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

所以这可以作为

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

答案 3 :(得分:0)

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

jQuery Override Plugin

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

答案 4 :(得分:0)

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

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

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