JQuery:从“a”标签中删除“OnClick”事件
Posted
技术标签:
【中文标题】JQuery:从“a”标签中删除“OnClick”事件【英文标题】:JQuery: Remove "OnClick" events from 'a' tags 【发布时间】:2012-01-23 19:29:39 【问题描述】:这是一个奇怪的问题。我们的内部网上有一些生产链接。一些 rouge javascript 在我们的 Intranet 主页上的所有链接上都返回“false”。
我们无权访问源代码来重新构建控件并修复此 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...”代码。
【问题讨论】:
***.com/questions/209029/… 【参考方案1】:你可以试试这个:
$("a").removeAttr("onclick");
编辑根据 cmets 和 jquery Docs 更新答案:
注意:使用 .removeAttr() 删除内联 onclick 事件处理程序在 Internet Explorer 6、7 或 8 中无法达到预期的效果。为避免潜在问题,请改用 .prop()
最好的方法:
$("a").prop("onclick", null);
【讨论】:
更好:$('...').prop('onclick',null).off('click');检查***.com/a/1687805/3063226 看起来即使没有 .off('click') 也能正常工作,.prop('onclick',null) 至少对于 IE11 来说已经足够了。【参考方案2】:从所有拥有该属性的链接中移除该属性:
$('a[onclick]').removeAttr('onclick');
【讨论】:
【参考方案3】:根据 JQuery 文档,您应该使用 .prop() 删除内联 onclick,因为这可以避免 Internet Explorer 6、7 或 8 中的问题。
试试这个
$element.prop("onclick", null);
我需要在第一次点击后删除标签的 onclick,所以这就是我所做的:
onclick="$(this).prop('onclick', null);"
希望对你有帮助
【讨论】:
到目前为止,这是唯一正确的答案。使用 jQuery,.removeAttr()
和 .unbind()
都不会安全地删除某些 Internet Explorer 版本中的内联 onclick
事件处理程序。见.removeAttr()
【参考方案4】:
你可以这样做;
$('a[onclick]').removeAttr('onclick');
【讨论】:
【参考方案5】:$(function()
$('a[onclick*="AddHit"]').removeAttr('onclick');
这将删除所有这些,但您要确保不会将其从不需要的链接中删除。很多东西都与 onclick 属性挂钩,如果你有一个类,你可以在删除之前验证或者 onclick 的内容会更好。不愿看到整个站点停止工作,因为没有调用所需的 JS。这将使用 onclick 中的 AddHit 功能删除任何 onclick,以确保您更安全。
【讨论】:
【参考方案6】:这将删除所有具有以“AddHit(
”开头的onclick
值的链接的onclick
属性(其他链接保持不变)。
$('a[onclick^="AddHit("]').removeAttr("onclick");
【讨论】:
【参考方案7】:未经测试,但我认为这应该可行:
$(document).ready(function()
$('a').removeAttr("OnClick");
);
更多信息:http://api.jquery.com/removeAttr/
【讨论】:
来自同一页面:“使用.removeAttr()
删除内联 onclick
事件处理程序在 Internet Explorer 6、7 或 8 中无法达到预期效果。为避免潜在问题,请使用 @ 987654325@ 改为:$element.prop("onclick", null);
"【参考方案8】:
请记住这一点,如果您的“onclick”属性为 ONLINE 并且在类似(引导)的 MODAL 中
像这样:(模态)
<a id="myDiv" href="#" onclick="doSomething();">Click here !</a>
->请提及<body>
标签!
在 jQuery 中(在第一个选择器中使用正文):
$('body #myDiv').prop('onclick', null);
我搜索了几个小时......
【讨论】:
【参考方案9】:您可以使用 CSS 指针事件属性。这设置了一个元素是否应该对指针事件做出反应。设置“none”禁用点击,设置“auto”启用。
$('a').css('pointer-events','none');
【讨论】:
【参考方案10】:使用.unbind()
方法或off()
摆脱它。
【讨论】:
我相信这将删除通过 jQuery 或 addEventListener() 添加的事件处理程序,但不会删除内联 onClick 事件处理程序。 – 贾斯珀以上是关于JQuery:从“a”标签中删除“OnClick”事件的主要内容,如果未能解决你的问题,请参考以下文章