[英]Remove All onclick Events for an Element
var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link");
for(var i=0;i<links.length;i++)
{
links[i].onclick = null;
}
是我当前的代码,但它不会删除onclick事件。 我不知道它们会是什么,因为这是一个油脂脚本。
您的代码仅处理element.onclick案例添加的事件。 使用addEventListener(适用于标准的浏览器)和attachEvent(适用于IE)添加的事件如何?
您需要使用removeEventListener和detachEvent删除事件以及将.onclick设置为null。 然后你的所有基地都将被覆盖。
这篇文章可能会有用:
http://www.computerhowtoguy.com/how-to-use-the-jquery-unbind-method-on-all-child-elements/
特别是一部分是一个删除所有点击事件的递归函数。 请记住,如果使用jQuery创建click事件,jQuery将删除click事件。 本文中给出的函数将删除使用jQuery创建的函数和不使用jQuery创建的函数。 给出的函数是这样的:
function RecursiveUnbind($jElement) {
// remove this element's and all of its children's click events
$jElement.unbind();
$jElement.removeAttr('onclick');
$jElement.children().each(function () {
RecursiveUnbind($(this));
});
}
您可以像这样调用函数:
RecursiveUnbind($('#container'));
该函数采用jQuery对象参数,但您可以轻松地将其更改为传递字符串作为元素的ID名称,或者您认为最好。
虽然这只能解决点击事件,但您可以轻松修改它以处理其他人或所有事件。
由于GM的沙箱,该代码不起作用。 links
在XPCNativeWrapper中 。
为了解决这个问题,请使用setAttribute()
,如下所示:
var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link");
for(var i=0;i<links.length;i++)
{
links[i].setAttribute ("onclick", null);
}
请注意,以其他方式设置的单击处理程序将需要以其他方式清除(例如removeEventListener()
)。
我猜你在onClick
为一个<a>
链接调用了一个href
或一个JavaScript函数。
您可以通过删除href
标记, onClick
事件或在这种情况下删除它们中的任何一个来删除其中任何一个。
for(var i=0;i<links.length;i++)
{
links[i].href='#';
links[i].onclick = '';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.