Zwei differents OnClick auf zwei divs übereinander
Ich habe zwei divs, einen großen und einen kleineren über dem anderen, jedes div hat seine eigene OnClick-Methode. Das problem ist, wenn ich klickte auf die kleineren div, das große div OnClick-Methode aufgerufen wird, zu.
Wen kann ich das vermeiden?
- Ich gehe davon aus, dass die Elemente verschachtelt sind.
- Kannst du eine demo? Sie können jsbin.com.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der beste Weg, um zu erkennen, welches element angeklickt wurde, ist die Analyse der Ziel-Ereignis ( click-Ereignis ). Vorbereitet habe ich kleines Beispiel für diesen Fall. Sie sehen es im code unten.
Diese javascript-Methode kann aufgerufen werden, bevor Sie führen Sie Ihr Skript
Beispiel
Ich hoffe, das hilft.
window.event
ist ein nicht-standard-IE-Eigenschaft.Dein problem ist, dass die
click
Veranstaltung wird sich ausbreiten bis das element Baum. Deshalb, jedes element enthält ein element, auf das geklickt wurde, wird auch das Feuer einclick
Veranstaltung.Die einfachste Lösung ist das hinzufügen
return false
Ihren handler.Wenn Sie jQuery, können Sie rufen Sie
e.stopPropagation();
sonst wirst du anrufen müssene.stopPropagation()
wenn es existiert, und setzen Sieevent.cancelBubble = true
.Weitere Informationen finden Sie unter hier.
e.StopPropagation();
aber es solltee.stopPropagation();
Was Sie zu tun haben, ist event-bubbling. Werfen Sie einen Blick auf diese Artikel: http://www.quirksmode.org/js/events_order.html.
Im Grunde stop-die Veranstaltung von der Weitergabe an das übergeordnete element, die Sie verwenden können, so etwas wie dieses:
e = e || window.event;
Du läufst in einer gemeinsamen Veranstaltung der Vermehrung. Check-out quirksmode.org zu bekommen die vollen details, was genau passiert ist. Im Grunde, was Sie tun müssen, um in den kleineren div-click-handler ist diese:
Wenn Sie sich entscheiden, verwenden Sie eine javascript-Bibliothek wie http://www.jquery.com Sie können ganz einfach erreichen, was Sie versuchen zu tun, indem mit der Vermehrung Präventionsangebote.
Dieser arbeitete für mich in Jquery:
Diese Weise, wenn das aktuelle Ziel ist nicht das gleiche wie das äußere div ist, wird es nichts tun. Implementieren Sie können die normalen Funktionen für die Kind-element.