Wie entferne ich einen Ereignishörer, wenn die Funktion für ihn in einer anderen Funktion verschachtelt ist?
Posted: 11 May 2025, 23:43
Dies ist eine knifflige Situation. Ich versuche, einen SVG-Container zu erstellen, der Maus-Drag-Bewegungen verfolgt. Wenn die Maus abgehalten wird, startet sie einen Prozess, bei dem ein weiterer Mousemove -Hörer angehängt wird, der die Bewegungen der Maus verfolgt. Ich kann also nicht aus dem Block zugreifen, der den Mauseup -Hörer hat. < /P>
Wie kann man dieses Problem umgehen?
Wie kann man dieses Problem umgehen?
Code: Select all
var svgCont = document.querySelector(".svgCont");
svgCont.addEventListener("mousedown", (e)=>{
//e: init mouse pos
startListeningForDrag([e.x, e.y]);
});
function startListeningForDrag(initMP){
console.log("InitMP: " + initMP);
svgCont.addEventListener("mousemove", function trackMouse(){
console.log("tracking");
});
svgCont.addEventListener("mouseup", function(){
svgCont.removeEventListener("mousemove", trackMouse )
});
}