[英]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.