jquery覆盖事件

str*_*oir 13 jquery overriding

我有这样的锚

<a href='#' onclick='return showform(this)'>click me</a>
Run Code Online (Sandbox Code Playgroud)

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

因为它似乎我添加

$('a').click( function() { alert('hi there!'); } );
Run Code Online (Sandbox Code Playgroud)

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

Sea*_*nJA 22

在您的情况下,onCick事件将覆盖jQuery事件.你可能做的是:

$('a').unbind('click').click(function(){
    alert('why hello there children.');
})
Run Code Online (Sandbox Code Playgroud)

但我相信这必须包括在之后

<a href='#' onclick='return showform(this)'>click me</a>
Run Code Online (Sandbox Code Playgroud)

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


kgi*_*kis 18

你尝试过这样的事情:

$("a").removeAttr("onclick");
Run Code Online (Sandbox Code Playgroud)


Ski*_*ick 10

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

如果你担心破坏东西,请搜索并替换:

 onclick='return showform(this)'
Run Code Online (Sandbox Code Playgroud)

并替换为

class='showform'
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

$('a.showform').click(function (e) {
    e.preventDefault();
    return showform(this);
});
Run Code Online (Sandbox Code Playgroud)

这将使您现有的处理程序工作.