In einer einfachen Spiel-App versuche ich, der anonymen Ereignis-Rückruf-Funktion einige Argumente zu übergeben. Ich konnte es nur mit einer anonymen Funktion tun, da es in den Kontext passt (sein Bereich identifiziert die Argumente). Das Problem ist, dass das Spiel eine Option zum Neustart hat. Nach dem Neustart fügt es den gleichen Knoten neue Ereignis-Listener hinzu, und hier können Sie, wie Sie vielleicht vermuten, die alten Ereignis-Listener immer noch da sein, was zu einer ungeeigneten Funktionalität und überladenen App führt. Die Lösung, die mir einfällt, ist das "Auffrischen", indem die alten eventListener entfernt werden, bevor die neuen hinzugefügt werden. Aber ich konnte keine Möglichkeit finden, die Ereignis-Callback-Funktion ist anonym!Ereignis-Listener entfernen, wenn die Inline-Funktion anonym verwendet wird
Also, was könnte eine alternative Lösung sein?
var adder = function(colorBox, num){
colorBox.addEventListener('click', function(){
eventCall(this, num);
});
}
var eventCall = function(t, num){
var clickedBox = t.style.backgroundColor;
....
Schauen Sie sich diese Problemumgehung den Ereignis-Listener von ColorBox entfernen - http://stackoverflow.com/questions/19469881/remove-all- Event-Listeners-spezifischen Typ – vabii
Ich habe es versucht .., ich denke, es hat einige Nachteile .., die es überhaupt nicht hilfreich macht. –