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

Javascript 我可以使用jQuery删除内联事件处理程序吗?,javascript,jquery,Javascript,Jquery,我有一些带有onclick属性的HTML。我想使用jQuery覆盖该属性。是否有任何方法可以使用jQuery删除单击处理程序?使用。尝试以下功能: $(function() { $('a').removeAttr('onclick'); }); ​ 一旦去掉了onclick属性,就可以附加自己的单击处理程序 $("#theElement")[0].onclick = function() { whatever(); }; // -- or -- $("#theElement")[

我有一些带有
onclick
属性的HTML。我想使用jQuery覆盖该属性。是否有任何方法可以使用jQuery删除单击处理程序?使用。

尝试以下功能:

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

一旦去掉了
onclick
属性,就可以附加自己的单击处理程序

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

并不是jQuery会使标准DOM函数和属性消失

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


尝试了给定的选项,但部分起作用,因为它们删除了一个选项,但不是全部

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

jQuery("selector")
    .removeAttr("onclick").removeAttr("onmouseout").removeAttr("onmouseover");
正如在Internet Explorer 8、9和11中使用.removeAttr()删除内联onclick事件处理程序时所引用的那样,无法达到预期的效果。为避免潜在问题,请改用.prop()

因此,这可以作为

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

我意识到,对于一个大型站点来说,这可能会很难实现,但使用记事本/Textmate/Gedit(或任何其他文本编辑器)查找“onclick”(或onclick)的所有实例并完全删除它们不是更容易(下载的代码带宽也更轻)吗?@David-我正在处理Rails 2生成的内联垃圾。一旦我上传到Rails 3,我就不会有这个问题了,因为他们让所有的JavaScript都变得不引人注目……我不能忽视Rails(我还没有真正玩过它),但作为对它产生的“内联垃圾”的回应,我只能说ewwww…@David-老实说,我认为他们大多数事情都是对的,但是对内联JavaScript的痴迷使他们犯了很大的错误。至少他们现在正在修理它!你说得对,但jQuery函数的优点是它们适用于所有元素,因此我可以从所有匹配元素中删除onclick,而不必对它们进行遍历。@Skilldrick:technology,
removeAttr()
也是一个循环。但我同意自己编写循环更方便。我在标记onclick=“document.setLang{{{lang.1}}.submit();return false;”上有js内联代码提交表单,但我不能像您提到的那样停止提交表单……此解决方案在Internet Explorer 8、9和11中可能不起作用。参见Abhishek Sinha的解决方案中的注释,该解决方案更具防错性,引用了该解决方案,当前建议的代码是
$element.prop(“onclick”,null)
$(function() {
    $('a').prop('onclick', false);
});