Mam div, do którego przypisałem onclick
wydarzenie. w tym div znajduje się tag z linkiem. Kiedy kliknę link, onclick
wywołane zostanie również zdarzenie z div. Jak mogę to wyłączyć, aby kliknięcie linku na div onclick
nie było uruchamiane?
scenariusz:
$(document).ready(function(){
$(".header").bind("click", function(){
$(this).children(".children").toggle();
});
})
Kod HTML:
<div class="header">
<a href="link.html">some link</a>
<ul class="children">
<li>some list</li>
</ul>
</div>
$(".header a")
z$(".header *")
i dostał Każde dziecko wybiera (div, formularze, wejście, etc).rel
skonfigurowanegoLub zamiast posiadania dodatkowej procedury obsługi zdarzeń w celu zapobieżenia innej procedurze obsługi, możesz użyć argumentu Obiekt zdarzenia przekazanego do procedury obsługi zdarzenia kliknięcia, aby ustalić, czy dziecko zostało kliknięte.
target
będzie klikniętym elementem icurrentTarget
będzie div .header:źródło
currentTarget
. Obejściem tego problemu jest zastąpienie gothis
, jak sugerowano w innej odpowiedzi .Lepszy sposób, używając on () z łańcuchami typu,
źródło
Odpowiedzi tutaj przyjęły pytanie OP zbyt dosłownie. Jak te odpowiedzi można rozwinąć w scenariusz, w którym WIELE elementów potomnych, a nie tylko jednego
<a>
znacznika? Oto jeden sposób.Załóżmy, że masz galerię zdjęć z zaciemnionym tłem i zdjęciami wyśrodkowanymi w przeglądarce. Po kliknięciu czarnego tła (ale niczego w nim) nie chcesz, aby nakładka została zamknięta.
Oto kilka możliwych HTML:
A oto jak działa JavaScript:
To zatrzyma zdarzenia kliknięcia z elementów wewnątrz
.contents
każdego badania,.gallery
więc galeria zostanie zamknięta tylko po kliknięciu wyblakłego czarnego obszaru tła, ale nie po kliknięciu w obszarze zawartości. Można to zastosować do wielu różnych scenariuszy.źródło
Natknąłem się na to pytanie, szukając innej odpowiedzi.
Chciałem uniemożliwić wszystkim dzieciom wyzwolenie rodzica.
JavaScript:
jQuery:
źródło
Albo to:
źródło
return false
linku, powinien być klikalny.Najprostszym rozwiązaniem jest dodanie tego CSS do dzieci:
źródło
Krótszy sposób, aby to zrobić:
źródło