Myślę, że bardziej pod względem wydajności. Jeśli zdecyduję się ustawić wyświetlanie elementu na none
, czy javascript będzie kontynuować nasłuchiwanie dołączonych do niego zdarzeń, czy też tymczasowo usuwa je, dopóki ekran nie zostanie przywrócony?CSS/Javascript - Czy "display: none" tymczasowo usuwa powiązane z nami detektory zdarzeń?
Odpowiedz
To zależy od rodzaju zdarzeń. Spróbujmy używając zdarzenie click
:
$(function() {
// Let's attach an event.
$("#eventContainer").click(function() {
$("#eventAffected").html("I changed.");
});
// This will hide the container surely when you click.
$("#hide-container").click(function() {
$("#eventContainer").hide().css("display", "none");
});
// This will trigger the event on the element.
$("#trigger-event").click(function() {
$("#eventContainer").trigger("click");
});
});
* {font-family: 'Segoe UI'; margin: 5px;}
#eventContainer, #eventAffected {background-color: #ccf; text-align: center; padding: 5px;}
#eventAffected {background-color: #cfc;}
<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
<div id="eventContainer">Hello I am the Event Box</div>
<div id="eventAffected">Hello, I change when event triggered on the above.</div>
<button id="hide-container">Hide</button>
<button id="trigger-event">Trigger Click</button>
testowe Przypadki
- kliknij na pierwszy Div.Second Div Changes, zdarzenie jest wyzwalane.
- Kliknij przycisk wyzwalacza.Second Div Changes, zdarzenie jest wyzwalane.
- Kliknij przycisk Ukryj i uruchom wyzwalacz.Second Div Changes, zdarzenie jest wyzwalane.
Wnioski
, czy element DOM jest widoczna na ekranie lub off-screen, wszystkie zdarzenia i zachowania są zachowane. Zmieniany jest tylko wyświetlacz CSS. Nic innego, nic nie ma związku z zachowaniem.
Jest to podobne do wszystkich zdarzeń, jedyne co musisz zrobić, to nie może obliczyć wymiarów ani modelu pudełka.
To pokazuje, że zdarzenia są zachowywane, gdy istnieje visibility: hidden
lub display: none
.
Wielkie dzięki za to wyjaśnienie. Kierując odpowiedź Quentina, nawet jeśli zdarzenia nie zostały usunięte, czy mam rację mówiąc, że przeglądarka przestanie je testować, gdy element nie będzie wyświetlany? – sookie
Technicznie będzie to sprawdzone i uruchomione. Ale nie będziesz w stanie zobaczyć. Nie wiem, jak Quentin to udowodni, ale to jest mój pogląd. ':)' –
Mam przykład [tutaj] (https://jsfiddle.net/ohad/2L46tego). możesz zobaczyć, że zdarzenie ustawione dla elementu display display none zostało wywołane. –
Nie, nie usuwa ich, ale ponieważ element i jego potomkowie nie są renderowani, użytkownik nie może wywołać zdarzenia na żadnym z nich, więc przeglądarka nigdy nie przetestuje element, aby zobaczyć, czy ma jakiekolwiek procedury obsługi zdarzeń.
- 1. Czy jQuery usuwa detektory zdarzeń ze zniszczonej zawartości DOM?
- 2. Czy display: none nadal korzystać wydajność renderowania
- 3. Jak działają detektory zdarzeń?
- 4. Outlook Web App "display: none" nie działa
- 5. Zdarzenia Java i detektory zdarzeń
- 6. angularjs: ng-show vs display: none
- 7. JavaScript display none after CSS3 animation
- 8. CSS Alternatywy dla stylu = "display: none"
- 9. Czy obrazy w/display: none nadal wysyłają żądanie HTTP?
- 10. Jak dodać detektory zdarzeń do tablicy obiektów
- 11. Gdzie umieszczam detektory zdarzeń i procedury obsługi?
- 12. Jak usunąć wszystkie detektory zdarzeń z obiektu wyświetlanego?
- 13. Czy JavaScript usuwa programy obsługi zdarzeń z usuniętych elementów DOM?
- 14. Czy detektory zdarzeń w jQuery są usuwane automatycznie po usunięciu elementu za pomocą .html()?
- 15. WinForms: tymczasowo wyłączyć moduł obsługi zdarzeń
- 16. : Jak znaleźć detektory zdarzeń w węźle DOM w prototypie?
- 17. Jak znaleźć detektory zdarzeń w węźle DOM przy użyciu JavaScriptu
- 18. Jak dodać detektory zdarzeń do obiektów w svg?
- 19. Get detektory zdarzeń dołączone do węzła za pomocą addEventListener
- 20. Knockout cleanNode() usuwa powiązania zdarzeń jquery?
- 21. Czy istnieje skrót do przełączania "display: none/block" w stylu elementu w Chrome DevTools?
- 22. Jak używać jquery do znalezienia elementu z display = none i zwrócić id elementów do zmiennej?
- 23. jQuery. Wybierz wszystkie elementy z klasą, ale bez stylu = "display: none;" atrybut
- 24. Kiedy jest tymczasowo zniszczony?
- 25. Numpy: Czy powinienem używać newaxis czy None?
- 26. Jak zrobić sprawdzian jaśmin własności display none css wykorzystaniem documet.getElementById i getElementsByClassName
- 27. Czy są dostępne bulgotania dla zdarzeń ładowania obrazów?
- 28. defaultdict (None)
- 29. display: flex zmienia się losowo w display: blok z jquery hide/show i google webfont
- 30. tr display brak błędów ie9
Nie usuwa detektorów zdarzeń, ale użytkownik nie może wywoływać zdarzeń, gdy element jest ukryty, chociaż nadal można wywoływać zdarzenia z kodu –
Zależnie od rodzaju zdarzeń, o których mówisz. –
Pod względem mojego własnego kodu są to głównie kliknięcia lub zdarzenia myszy. – sookie