Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何覆盖内联onclick事件?_Javascript_Html - Fatal编程技术网

Javascript 如何覆盖内联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

这似乎很简单

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

<a id="sample" href="..." onclick="alert('hello world')" />...</a>
假设HTML是预先编写的,不能更改,只能使用JavaScript进行操作。

尝试:

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

$.noop == function(){};

尽管能够设置
返回false404
,您的代码仍然可以工作

我找到了答案。

试试这个:

// 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")');