2011-12-19 83 views
13

这是一个奇怪的问题。我们的内联网上有一些生产链接。一些胭脂的JavaScript在我们Intranet主页上的所有链接上返回“false”。JQuery:从'a'标签中删除“OnClick”事件

我们无权访问源以重新构建控件并修复此javascript。

所以作为临时创可贴我想使用jQuery

的链接,进入的链接所有“的onClick”事件,现在是这样的:

<a href="https://www.mysite.com/" onclick="AddHit('Header: mysite.com', 'http://www.mysite.com'); return false;" title="Mysite Home">www.Mysite.com</a> 

我想写一些jquery获取“onclick ='AddHit ...”的代码。

+0

http://stackoverflow.com/questions/209029/best-way-to -remove-an-event-handler-in-jquery – 2011-12-19 17:49:46

回答

28

你可以试试这个:根据意见和jquery Docs

$("a").removeAttr("onclick"); 

编辑更新应答:

注意:删除使用.removeAttr()没有实现内联onclick事件处理程序在Internet Explorer 6,7或8中的预期效果。为避免潜在问题,请使用.prop()代替

要做到这一点

的最佳方式:

$("a").prop("onclick", null); 
+0

更好: $('...')。prop('onclick',null).off('click'); 检查http://stackoverflow.com/a/1687805/3063226 – Heitor 2017-03-19 07:17:11

+0

即使没有.off('click'),.prop('onclick',null),它看起来仍然可以正常工作,至少对于IE11是足够的。 – 2017-07-25 14:53:47

7

从拥有它的所有链接中删除属性:

$('a[onclick]').removeAttr('onclick'); 
-1

使用.unbind()方法或off()摆脱这一点。

+0

我相信会删除通过jQuery或addEventListener()添加的事件处理程序,而不是内联的onClick事件处理程序。 - Jasper – Foreever 2014-01-24 12:02:48

2

你可以做这样的事情;

$('a[onclick]').removeAttr('onclick'); 
0

没有测试,但我认为这应该工作:

$(document).ready(function(){ 
    $('a').removeAttr("OnClick"); 
}); 

更多信息:http://api.jquery.com/removeAttr/

+3

来自同一页:“使用'.removeAttr()'删除inline'onclick'事件处理程序在Internet Explorer 6,7或8中无法达到预期效果。为避免潜在问题,请使用'.prop() '而不是:'$ element.prop(“onclick”,null);'“ – WynandB 2013-02-13 23:20:51

2
$(function(){ 
    $('a[onclick*="AddHit"]').removeAttr('onclick'); 
} 

这将删除所有的人,但是你要确保你不不要将它从不需要的链接中移除。如果你有一个你可以在删除之前验证的类,或onclick的内容会更好,那么很多东西会挂钩onclick属性。会讨厌看整个网站停止工作,因为需要的JS没有被调用。这将通过onclick中的AddHit函数删除任何onclicks,以保证您的安全。

2

这将删除onclick值为“AddHit(”(其他链接保持不变)的所有链接的onclick属性。

$('a[onclick^="AddHit("]').removeAttr("onclick"); 
3

据jQuery的文档,你应该使用.prop()来的onclick删除内联,因为这避免了在Internet Explorer 6,7或8的问题。

试一下这个

$element.prop("onclick", null); 

我需要删除第一个点击所以这里后标签的onclick是我做过什么:

onclick="$(this).prop('onclick', null);" 

希望它可以帮助

+2

到目前为止,这是唯一正确的答案。使用jQuery,'.removeAttr()'和'.unbind()'都不会安全地删除某些版本的Internet Explorer中的内联'onclick'事件处理程序。请参阅['.removeAttr()'](http://api.jquery.com/removeAttr) – WynandB 2013-02-13 23:28:17

0

,请记住这如果你的'onclick'属性是ONLINE并且在一个MODAL中(如bootstrap) s:(in modal)

<a id="myDiv" href="#" onclick="doSomething();">Click here !</a> 

- >请提及<body>标签!

jQuery中(与第一选择体):

$('body #myDiv').prop('onclick', null); 

我搜索了几个小时......