2017-04-03 31 views
4

我知道如何從元素中刪除偵聽器,但是如何從頁面上的每個元素中刪除每個事件偵聽器?如何從頁面中刪除每個聽衆?

jQuery和純JS解決方案會很好。

+0

爲什麼你需要做的是什麼? – Ryan

+0

你檢查過jQuery .off()嗎? http://api.jquery.com/off/ – Mary

+0

也許你在這裏得到答案: http://stackoverflow.com/questions/19469881/remove-all-event-listeners-of-specific-type –

回答

2

我建議看看jQuery的.off function。 此外,基於this stackoverflow question,我會嘗試刪除所有聽衆每次用下面的代碼

$("body").find("*").off(); 

希望這可以幫助你。

+0

我剛剛在https://www.reddit.com/place?webview=true上測試了它,但它似乎沒有做任何事情;點擊畫布仍然放大和縮小。代碼是否被破壞或者畫布沒有使用事件偵聽器? – Pikamander2

+0

哦,我認爲onclick並不算作事件監聽者。 – Pikamander2

+0

我試圖找到這個畫布相關的問題上的東西,但我找不到更多的這個職位:http://www.c-sharpcorner.com/UploadFile/cd3310/html5-canvas-disable-event-listener-by -名稱/。 –

1

你可以通過表單元素如低於您的首選方式來刪除事件偵聽器循環。

最快的方法是克隆將刪除所有事件偵聽器的節​​點,但如果使用'onclick'屬性,則不會刪除該節點。

document.getElementById('button').addEventListener('click', onClick, false); 
 

 
function onClick() { 
 
    console.log('Form clicked'); 
 
    var form = document.getElementById('myForm'); 
 

 
    for(var i = 0; i < form.elements.length; i++){ 
 
     var elm = form.elements[i]; 
 
     removeEvents(elm); 
 
    } 
 
} 
 

 
function removeEvents(elm) { 
 
    // The fastest way to do this is to just clone the node, which will remove all event listeners: 
 

 
    var new_element = elm.cloneNode(true); 
 
    elm.parentNode.replaceChild(new_element, elm); 
 
}
<form id="myForm"> 
 
    <input id="button" type="button" value="Click" /> 
 
</form>

1

只是克隆HTML DOM,會在默認情況下刪除該事件。

這裏是一個例子。

<html> 
 

 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> 
 
    <script> 
 
     $(document).ready(function() { 
 
      $("#EventButton").click(function() { 
 
       alert("Click event worked"); 
 
       var old_element = document.documentElement; 
 
       var new_element = old_element.cloneNode(true); 
 
       old_element.parentNode.replaceChild(new_element, old_element); 
 
      }); 
 
     }); 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <button id="EventButton">Remove Events</button> 
 
</body> 
 

 
</html>