你如何覆盖内联onclick事件?

时间:2010-04-13 13:33:32

标签: javascript html

这看似简单。

如何使用JavaScript覆盖以下HTML中的onclick事件?

<a id="sample" href="..." onclick="alert('hello world')" />...</a>

我已经尝试过使用jQuery,但这并不能解决问题:

$('#sample').attr('onclick','alert("done")')

假设HTML是预先编写的,除了使用JavaScript操作之外无法更改。

4 个答案:

答案 0 :(得分:50)

试试这个:

// Setting the DOM element's onclick to null removes 
// the inline click handler
$("#sample")[0].onclick = null;
$("#sample").click(function() { alert("done") });

答案 1 :(得分:6)

<a id="sample" href="..." onclick="alert('hello world'); return false;" />...</a>

或者

$('#sample').attr('onclick','alert("done"); return false;')

尽管能够直接在onclick或使用jQuery设置return false;,但它实际上并不需要使用jQuery。好处是,无论出于何种原因,您的jQuery脚本都会导致404,您的代码仍然有用。

我找到了答案here

答案 2 :(得分:6)

这也可以在没有jQuery的情况下完成:

document.getElementById("sample").setAttribute('onclick','alert("done")');

答案 3 :(得分:1)

尝试:

document.getElementById("sample").onclick = $.noop;

$.noop == function(){};

jQuery noop