Javascript 如何覆盖内联onclick事件?
这似乎很简单 如何使用JavaScript覆盖以下HTML中的onclick事件Javascript 如何覆盖内联onclick事件?,javascript,html,Javascript,Html,这似乎很简单 如何使用JavaScript覆盖以下HTML中的onclick事件 <a id="sample" href="..." onclick="alert('hello world')" />...</a> 假设HTML是预先编写的,不能更改,只能使用JavaScript进行操作。尝试: document.getElementById("sample").onclick = $.noop; $.noop == function(){}; 尽管能够设置返回f
<a id="sample" href="..." onclick="alert('hello world')" />...</a>
假设HTML是预先编写的,不能更改,只能使用JavaScript进行操作。尝试:
document.getElementById("sample").onclick = $.noop;
$.noop == function(){};
尽管能够设置返回false直接在onclick中或通过使用jQuery,实际上根本不需要使用jQuery。好处是,无论出于何种原因,jQuery脚本导致了404
,您的代码仍然可以工作
我找到了答案。试试这个:
// Setting the DOM element's onclick to null removes
// the inline click handler
$("#sample")[0].onclick = null;
$("#sample").click(function() { alert("done") });
这也可以在没有jQuery的情况下完成:
document.getElementById("sample").setAttribute('onclick','alert("done")');
这是不明显的,而且有效。谢谢安德鲁。为什么[0]?@Diodeus:jQuery对象与DOM集合或数组非常相似,每个包含的元素都有数字索引<代码>[0]
将获取选择器的第一个匹配元素。由于我是按ID选择的,因此我假设它是唯一的,并且不会生成数组。有时似乎合乎逻辑的是……错误的。进一步使用此方法,就像在我的例子中一样,如果您在多个元素上进行匹配,则可以执行$('.datacell')。每个(function(){this.onclick=$.noop;})
单击以使所有的静音
's@Diodeus“我假设因为我是按ID选择的,所以它是唯一的”=>在这种特定情况下,[0]的目的不是限制选择,而是将格式从jQuery对象转换为DOM elementOh balls,我想我完全误解了你的问题!对不起,伙计:S$(“#示例”)[0].onclick=null
和document.getElementById(“示例”).onclick=$.noop代码>几乎相同。你们怎么能说这不起作用呢?我测试了这个,发现它是为我的目的工作的(我并没有测试它是否覆盖了属性,但它可能会覆盖)
$('#sample').attr('onclick','alert("done"); return false;')
// Setting the DOM element's onclick to null removes
// the inline click handler
$("#sample")[0].onclick = null;
$("#sample").click(function() { alert("done") });
document.getElementById("sample").setAttribute('onclick','alert("done")');