var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link");
for(var i=0;i<links.length;i++)
{
links[i].onclick = null;
}
是我当前的代码,但它不会删除onclick事件。我不知道他们会是什么,因为这是一个grepmonkey脚本。删除元素的所有onclick事件
var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link");
for(var i=0;i<links.length;i++)
{
links[i].onclick = null;
}
是我当前的代码,但它不会删除onclick事件。我不知道他们会是什么,因为这是一个grepmonkey脚本。删除元素的所有onclick事件
您的代码只处理element.onclick案件添加的事件。添加addEventListener(适用于符合标准的浏览器)和attachEvent(适用于IE)的事件是什么?
您需要使用removeEventListener和detachEvent删除事件以及将.onclick设置为null。然后你的基地将被覆盖。
我猜你的href
或onClick
上的<a>
链接上调用JavaScript函数。
您可以通过删除href
标记,onClick
事件或在这种情况下删除它们中的任何一个来删除其中的任何一个。
for(var i=0;i<links.length;i++)
{
links[i].href='#';
links[i].onclick = '';
}
似乎没有工作http://tv.blinkx.com/show/penn-teller-bullshit/Uy5MaFV5qcfgsDINw-hR0_Xfvuo#s3e6 – Steven 2011-02-07 08:27:31
该代码不起作用because of GM's sandbox. links
is in an 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()
,例如)。
这篇文章很可能是有用的:
http://www.computerhowtoguy.com/how-to-use-the-jquery-unbind-method-on-all-child-elements/
一部分尤其是递归函数,消除所有点击事件。请记住,如果点击事件是使用jQuery创建的,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,或者你认为是最好的。
虽然这只能解决点击事件,但您可以轻松修改它以处理其他或全部事件。
“是我目前的代码(什么),但它不会删除onclick事件。” ! – 2011-02-07 08:02:55
“这是我目前的代码,...”我认为 – w35l3y 2011-02-12 03:14:41