jquery覆盖事件

jquery覆盖事件,jquery,overriding,Jquery,Overriding,我有一个这样的锚 <a href='#' onclick='return showform(this)'>click me</a> 新的点击处理程序没有覆盖旧的点击处理程序。如果您像这样使用jQuery,您不希望HTML中有任何处理程序。您不能删除onClick属性吗 如果您担心损坏物品,请在以下位置搜索并更换: onclick='return showform(this)' 并替换为 class='showform' 然后你可以做: $('a.showform'

我有一个这样的锚

<a href='#' onclick='return showform(this)'>click me</a>

新的点击处理程序没有覆盖旧的点击处理程序。如果您像这样使用jQuery,您不希望HTML中有任何处理程序。您不能删除
onClick
属性吗

如果您担心损坏物品,请在以下位置搜索并更换:

 onclick='return showform(this)'
并替换为

class='showform'
然后你可以做:

$('a.showform').click(function (e) {
    e.preventDefault();
    return showform(this);
});

这将使您现有的处理程序继续工作。

在您的情况下,onick事件将覆盖jQuery事件。您可以做的是:

$('a').unbind('click').click(function(){
    alert('why hello there children.');
})
但我相信这必须包括在

<a href='#' onclick='return showform(this)'>click me</a>


也就是说,无论如何你都不应该使用onClicks。。。这使得代码很难维护和更改(如您所发现的)。

您是否尝试过类似的方法:

$("a").removeAttr("onclick");

它有一个插件,但是你应该只在你真正需要的时候才这么做。该插件允许您调用原始函数或完全忽略/替换它


如果您关注的是Yahoo,所有脚本都包含在页面的末尾……这是真的,我想我应该指出这一部分,因为最后一个onclick事件应该覆盖其余的no?这取决于调用$('a').unbind()的时间。如果它在$(document).ready()中,那么它可能在
头中,并且仍然可以工作。我不是100%确定,但我认为unbind不能删除未使用jQuery设置的处理程序。@SSH This:Whoops。修复了它(没人看到这一点感到惊讶…)为什么?结构/内容和行为应分开。我已经删除了onclick函数,一切都依赖jquery,因为这样看起来更灵活。。。感谢大家的回复:)这是一篇老文章,但这肯定是ready()函数中对我有效的方法,它也对我非常有效!
$("a").removeAttr("onclick");
$(divElementObj).override('onclick', 'click', function(...));