我有这样的锚
<a href='#' onclick='return showform(this)'>click me</a>
但我希望能够覆盖onclick函数,如何在jquery中执行此操作?
因为我添加
时似乎$('a').click( function() { alert('hi there!'); } );
新的点击处理程序不会覆盖旧的
答案 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)
有一个插件,但你应该只在你需要的时候这样做。该插件允许您调用原始函数或完全忽略/替换它
$(divElementObj).override('onclick', 'click', function(...));