I have the following Javascript code and I'm wondering if I can simplify.
let seattle = svgDoc.getElementById("Seattle");
seattle.addEventListener("mouseover", hover);
seattle.addEventListener("mouseout", unhover);
seattle.addEventListener("click", select);
let sanJose = svgDoc.getElementById("San_Jose");
sanJose.addEventListener("mouseover", hover);
sanJose.addEventListener("mouseout", unhover);
sanJose.addEventListener("click", select);
let losAngeles = svgDoc.getElementById("Los_Angeles");
losAngeles.addEventListener("mouseover", hover);
losAngeles.addEventListener("mouseout", unhover);
losAngeles.addEventListener("click", select);
more cities...
When user selects a specific city, I need to disable eventlistener ONLY for that specific city and store the city name (which is also the element id).
function select(){
if(numSelected != 2){
if(!startSet){start=this.id; startSet = true;}
else if(!endSet){end=this.id; endSet = true;}
this.style.fill = "#5cb85c";
this.removeEventListener("mouseover", hover);
this.removeEventListener("mouseout", unhover);
this.removeEventListener("click", select);
this.addEventListener("click", unselect);
numSelected++;
}
}
I read somewhere I can use JQuery to add event listener to all classes so I can do something like
${".cities"}.addEventListener("click", select);
But is there a way to get the specific element ID and disable only that element's event listener?