jquery覆盖事件

时间:2009-12-18 12:07:25

标签: jquery override

我有这样的锚

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

但我希望能够覆盖onclick函数,如何在jquery中执行此操作?

因为我添加

时似乎
$('a').click( function() { alert('hi there!'); } );

新的点击处理程序不会覆盖旧的

4 个答案:

答案 0 :(得分:22)

在你的情况下,onCick事件会覆盖jQuery事件。你可以做的是:

$('a').unbind('click').click(function(){
    alert('why hello there children.');
})

但我相信这必须在

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

那就是说,你应该真的不使用onClicks ......它使得代码真的难以维护和改变(正如你已经发现的那样)。

答案 1 :(得分:18)

你有没有试过这样的事情:

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

答案 2 :(得分:10)

如果你正在使用这样的jQuery,你不希望HTML中有任何处理程序。你不能只删除onClick属性吗?

如果您担心破坏内容,请搜索并替换:

 onclick='return showform(this)'

并替换为

class='showform'

然后你可以这样做:

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

这将使您现有的处理程序正常工作。

答案 3 :(得分:0)

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

jQuery Override Plugin

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