suit: Standardaktion unterdrücken

Beitrag lesen

Aus welchem Grund wird die Standardaktion bei diesem Beispiel nicht unterdrückt?

p-Elemente haben beim draufklicken keine Default-Aktion

<p id="absatz" style="padding:50px; background:yellow;">
<a class="link" href="http://www.spiegel.de">Spiegel.de</a>
</p>


> ~~~javascript
  

> document.getElementById("absatz").onclick = function() {  
  
hier packst du ein click-Event auf das Element mit der ID "absatz" (also dein p-Element)  
  

> 	var ziel = this.target || this.srcElement;  
> 	if(ziel.className == "link") {  

if ermittelt du, ob das Ziel (das p-Element) die Klasse "link" hat, hat es aber nicht  
  

> 		alert("onclick");  
> 		return false;  
  
wird nicht ausgeführt.  
  
  

> 	}  
> }  
> 

Ohne if-Abfrage (die allerdings unerlässlich ist) funktioniert das Unterdrücken der Standardaktion problemlos.

Ohne der Verzweigung (die niemals zutrifft) wird das "return false" auch bei einem klick auf das a-Element ausgeführt (weil du ja beim Klick auf den Link immer "alle" klicks und es durch das DOM durchbubbelt).

Lösung: bring deine Logik in Ordnung, die für das Auffinden der Elemente zuständig ist und unterscheide klar _was_ eine Aktion liefern soll.

dein p-Element ist jedenfalls nicht dasselbe wie dessen Kind-Element (das a-Element).