簡體   English   中英

如何從元素中刪除一個類型的所有事件

[英]How do I remove all events of a type from an element

我想從某個 DOM 元素中刪除所有點擊事件。 如何? 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 的名稱,或者您認為最好的方式。

不幸的是,DOM 規范中沒有方法可以在不知道監聽器函數的情況下列出或刪除事件監聽器。

您可以做的最好的事情是創建一個相同類型的新元素,復制所有屬性並將子元素從原始元素移動到新元素。

你沒有提到你是否使用庫來協助 DOM 操作,但如果你使用 jQuery,它就像 $(domelement).unbind('click'); 一樣簡單。 記錄在這里: http ://api.jquery.com/unbind/

如果要刪除所有事件偵聽器,如何為 onclick 事件分配一個空函數?

<YOUR_HTML_ELEMENT>.onclick=function(){};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM