musisz anulować propagacji zdarzenia, więc zdarzenie kliknięcia elementu nadrzędnego nie zostanie wywołana. Wypróbuj:
<div class="outer" ng-click="toggle()">
<div class="inner" ng-click="$event.stopPropagation()">You can click through me</div>
</div>
Po kliknięciu elementu potomnego jego zdarzenie zostanie wyzwolone. Ale na tym się nie kończy. Najpierw wywoływane jest zdarzenie kliknięcia elementu podrzędnego, następnie wyzwalane jest zdarzenie kliknięcia elementu nadrzędnego i tak dalej. To się nazywa propagacja zdarzeń, Aby zatrzymać propagację zdarzeń (wyzwalanie zdarzeń kliknięcia dla rodziców), musisz użyć powyższej funkcji, stopPropagation
.
dodałam trochę CSS dopełnienie, więc przykładem jest wyraźniejszy. Bez dopełnienia element potomny zajmuje całą wewnętrzną przestrzeń i nie można kliknąć elementu nadrzędnego bez kliknięcia elementu potomnego.
jaki sposób '.outer' div jest klikalny jeśli nie ma nic, że tekst bezpośrednio insde. –
Funkcja e.stopPropagation() powinna być używana w elemencie nadrzędnym, a nie w podrzędnej div, tak aby element potomny nie mógł mieć przypisanego zdarzenia kliknięcia .... –
To prawda, dostosuję moją odpowiedź i dodaję przykład pracy. – itd