我有一些带有 onclick
属性的 HTML。 我想使用 jQuery 覆盖该属性。 有没有办法使用 jQuery 删除点击处理程序? 使用 unbind 不起作用。
我有一些带有 onclick
属性的 HTML。 我想使用 jQuery 覆盖该属性。 有没有办法使用 jQuery 删除点击处理程序? 使用 unbind 不起作用。
尝试使用.removeAttr()
函数:
$(function() {
$('a').removeAttr('onclick');
});
当你去掉了 onclick
属性后,可以附加自己的点击事件处理程序。
$("#theElement")[0].onclick = function() {
whatever();
};
// -- or --
$("#theElement")[0].onclick = null;
并不是说 jQuery 会使标准的 DOM 函数和属性消失。;-)
removeAttr()
也是一个循环。但我同意使用它比手动编写循环更方便。 - Tomalak如http://api.jquery.com/prop/中所述,使用.removeAttr()无法在Internet Explorer 8、9和11中成功移除内联onclick事件处理程序。为避免潜在问题,请改用.prop()。
因此,可以这样做:
$(function() {
$('a').prop('onclick', false);
});
有一个针对此功能的插件,但只有在确实需要时才应使用它。该插件提供了调用旧函数或完全忽略它的选项。
$(divElementObj).override('onclick', 'click', function(...));
尝试了给定的选项,但只部分起作用,因为它们只删除了其中一个。
相反,我尝试了以下链接作为解决方法。我正在使用版本1.4.2。
jQuery("selector")
.removeAttr("onclick").removeAttr("onmouseout").removeAttr("onmouseover");