2017-04-03 6 views
4

Ich weiß, wie man einen Listener von einem Element entfernt, aber wie kann ich jeden Event Listener von jedem Element auf der Seite entfernen?Wie kann ich jeden Listener von einer Seite entfernen?

Eine jQuery und reine JS-Lösung wäre nett.

+0

Warum wollen Sie das tun müssen? – Ryan

+0

Haben Sie jQuery .off() überprüft? http://api.jquery.com/off/ – Mary

+0

vielleicht erhalten Sie hier eine Antwort: http://StackOverflow.com/Questions/19469881/Remove-all-Event-Listeners-of-Specific-Typ –

Antwort

2

Ich würde vorschlagen, in die .off function von jQuery zu suchen. Auch basierend auf this stackoverflow question, würde ich versuchen, alle Zuhörer alle mit dem folgenden Code

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

Hoffnung entfernen diese Ihnen helfen könnten.

+0

Ich habe gerade dies auf https://www.reddit.com/place?webview=true getestet, aber es scheint nichts zu tun; Durch Klicken auf die Leinwand wird immer noch vergrößert und verkleinert. Ist der Code fehlerhaft oder verwendet die Zeichenfläche keinen Ereignis-Listener? – Pikamander2

+0

Oh, Onclick zählt nicht als Eventlistener, denke ich. – Pikamander2

+0

Ich habe versucht, etwas auf diesem Canvas-Problem zu finden, aber ich kann nicht mehr als diesen Beitrag finden: http://www.c-sharpcorner.com/UploadFile/cd3310/html5-canvas-disable-event-listener-by -Name/. –

1

Sie können dies auch versuchen.

http://jsfiddle.net/LkfLezgd/9/

$("#cloneButton").click(function() { 
$('body').replaceWith($('body').clone().html()); 
}); 
1

Sie können eine Schleife durch die Formularelemente wie unten die Ereignis-Listener auf Ihre bevorzugte Art und Weise zu entfernen.

Der schnellste Weg, dies zu tun ist, nur den Knoten zu klonen, der alle Event-Listener entfernt, aber dies wird nicht entfernt, wenn 'onclick' Attribut verwendet wird.

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

klonen Sie einfach den HTML-dom, dass die Ereignisse standardmäßig entfernt werden.

Hier ist ein Beispiel.

<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>

Verwandte Themen