Ich habe eine Div, an die ich eine onclick
Veranstaltung angehängt habe. In diesem Div gibt es ein Tag mit einem Link. Wenn ich auf den Link onclick
klicke, wird auch das Ereignis vom div ausgelöst. Wie kann ich dies deaktivieren, damit beim Klicken auf den Link onclick
nicht das Div ausgelöst wird?
Skript:
$(document).ready(function(){
$(".header").bind("click", function(){
$(this).children(".children").toggle();
});
})
HTML Quelltext:
<div class="header">
<a href="link.html">some link</a>
<ul class="children">
<li>some list</li>
</ul>
</div>
$(".header a")
mit$(".header *")
und bekam jedes Kind ausgewählt (div, Formulare, Eingang, etc).rel
Oder, anstatt einen zusätzlichen Event - Handler mit einem anderen Handler zu verhindern, können Sie das verwenden Ereignisobjekt Argument zu Ihrem Click - Ereignishandler übergeben , um zu bestimmen , ob ein Kind geklickt wurde.
target
wird das angeklickte Element sein undcurrentTarget
wird das .header div sein:quelle
currentTarget
. Eine Problemumgehung besteht darin, sie durch zu ersetzenthis
, wie in einer anderen Antwort vorgeschlagen .Besser durch Verwendung von on () mit Verkettung wie,
quelle
Die Antworten hier nahmen die Frage des OP zu wörtlich. Wie können diese Antworten zu einem Szenario erweitert werden, in dem es VIELE untergeordnete Elemente gibt, nicht nur ein einzelnes
<a>
Tag? Hier ist eine Möglichkeit.Angenommen, Sie haben eine Fotogalerie mit einem verdunkelten Hintergrund und die im Browser zentrierten Fotos. Wenn Sie auf den schwarzen Hintergrund klicken (aber nichts darin), soll die Überlagerung geschlossen werden.
Hier ist ein möglicher HTML-Code:
Und so würde das JavaScript funktionieren:
Dadurch werden die Klickereignisse von Elementen innerhalb
.contents
jeder Recherche gestoppt,.gallery
sodass die Galerie nur geschlossen wird, wenn Sie in den ausgeblendeten schwarzen Hintergrundbereich klicken, nicht jedoch, wenn Sie in den Inhaltsbereich klicken. Dies kann auf viele verschiedene Szenarien angewendet werden.quelle
Ich stolperte über diese Frage und suchte nach einer anderen Antwort.
Ich wollte verhindern, dass alle Kinder die Eltern auslösen.
JavaScript:
jQuery:
quelle
Oder dieses:
quelle
return false
einen Link hinzuzufügen , er sollte anklickbar sein.Die einfachste Lösung besteht darin, den Kindern dieses CSS hinzuzufügen:
quelle
Ein kurzer Weg, dies zu tun:
quelle