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>

->请提及&lt;body&gt;标签!

在 jQuery 中(在第一个选择器中使用正文):

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

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

【讨论】:

【参考方案9】:

您可以使用 CSS 指针事件属性。这设置了一个元素是否应该对指针事件做出反应。设置“none”禁用点击,设置“auto”启用。

$('a').css('pointer-events','none');

【讨论】:

【参考方案10】:

使用.unbind() 方法或off() 摆脱它。

【讨论】:

我相信这将删除通过 jQuery 或 addEventListener() 添加的事件处理程序,但不会删除内联 onClick 事件处理程序。 – 贾斯珀

以上是关于JQuery:从“a”标签中删除“OnClick”事件的主要内容,如果未能解决你的问题,请参考以下文章

jquery修改a标签中文本的值。

JQuery模拟点击页面上的所有a标签,触发onclick事件

jquery怎么设置a标签不可点击

onclick事件中传参

【Jquery】jquery怎样控制a标签的字体颜色??

怎么对a标签 不跳转触发点击事件