2012-05-11 8 views
8

Wie würde ich onclick für ein inneres Element stoppen, das auch durch sein Elternelement klickt.jquery onclick penetrations to übergeordnetes Element

<div id="1" onclick="alert('1')"> 
<div id="2" onclick="alert('2')"></div> 
</div> 

Wenn die zweite div (id = „2“) ist sichtbar auf der Oberseite der ersten, und es angeklickt wird, wird Sie beide Meldungen erhalten 1 & 2.

Wie kann ich vermeiden, diese so Ich bekomme nur die Warnung von dem, was ich (sichtbar) klicke, Ohne die Onclick-Funktion vollständig zu deaktivieren, kann das äußere Div verfügen.

Beispiel:http://jsfiddle.net/DPCx8/

Antwort

7
​var outer = document.getElementById('outer'); 
outer.onclick = function(event) 
    { 
     alert('outer'); 
     event.stopPropagation(); 
    }​​ 
    var inner = document.getElementById('inner'); 
inner.onclick = function(event) 
    { 
     alert('inner'); 
     event.stopPropagation(); 
    } 

http://jsfiddle.net/DYykA/1/

+0

Danke! Das funktioniert perfekt. Ich hatte Probleme beim Anwenden der 'stopPropagation()', das hilft also! –

6

Sie müssen stop the propagation auf dem Kind, so dass die Veranstaltung Blase nicht auf den Elternteil.

$("#inner").on("click", function(e){ 
    e.stopPropagation(); 
}); 
+0

dank zu verhindern! Ich habe versucht, dies in das Javascript zu setzen und kann es nicht zum Laufen bringen. Ich habe 'alarm's vor und nach und ich bekomme immer noch die 'äußere' Warnung –

+0

@iight Sie fügen die Handler direkt zum HTML hinzu - tun Sie das nicht. Fügen Sie es stattdessen wie oben mit einem CSS-Selektor über jQuery hinzu. – Sampson

+0

das ist was ich getan habe. Ich habe es als Skript hinzugefügt, nicht auf das Element selbst –

3

Verwendung event.stopPropogation(); zu sprudelnden Veranstaltungs

+0

danke! funktioniert super! –

Verwandte Themen