J o: click-within javascript test

Beitrag lesen

Morgen,

Ist der Click in oder ausserhalb <nav> erfolgt?

Um das zu testen, muss ich notwendigerweise einen Handler auf body registrieren.

document.body.addEventListener("click", function(ev){
  // ich habe ev.target
  // was ist die schnellste Methode um zu testen, 
  // ob zwischen ev.target und body ein <nav> liegt?
});

Könnt ihr mir einen Tipp geben?

Du brauchst nicht im Eventlistener den gesamten <body> durchsuchen, da dieser immer ausgeführt wird, ist das nicht performant. Du solltest den Eventhandler direkt auf ein bestimmtes Element oder eine Elementgruppe registrieren.

var element = document.getElementById('navID')
// oder
var element = document.getElementsByClassName('class')
//oder
var element = documentgetElementByTagName('nav')
if (element) {
	element.addEventListener('click', function(event){
		// do something
	})
}

Gruß
Jo