Zakładałem, że jeśli wyłączyłem div, wszystkie treści również zostały wyłączone.
Jednak zawartość jest wyszarzona, ale nadal mogę z nią korzystać.
Czy jest na to sposób? (wyłącz div i wyłącz wszystkie treści)
javascript
jquery
html
juan
źródło
źródło
Użyj frameworka takiego jak JQuery, aby wykonywać takie czynności jak:
Wyłączanie i włączanie elementów wejściowych w bloku Div Korzystanie z jQuery powinno ci pomóc!
Od jQuery 1.6 powinieneś używać
.prop
zamiast.attr
do wyłączania.źródło
Chciałem tylko wspomnieć o tej metodzie rozszerzenia do włączania i wyłączania elementów . Myślę, że jest to o wiele czystszy sposób niż bezpośrednie dodawanie i usuwanie atrybutów.
Następnie po prostu wykonaj:
źródło
Oto krótki komentarz dla osób, które nie potrzebują div, a jedynie blokadę. W HTML5
<fieldset disabled="disabled"></fieldset>
dostałem atrybut disabled. Każdy element formularza w wyłączonym zestawie pól jest wyłączony.źródło
Wyłączony atrybut nie jest częścią specyfikacji W3C dla elementów DIV , tylko dla elementów formularza .
Podejście jQuery sugerowane przez Martina jest jedynym niezawodnym sposobem na osiągnięcie tego celu.
źródło
podobne do rozwiązania cletu, ale dostałem błąd przy użyciu tego rozwiązania, oto obejście:
działa dobrze na mnie
źródło
Możesz użyć tej prostej instrukcji CSS, aby wyłączyć zdarzenia
źródło
Testowane przeglądarki: IE 9, Chrome, Firefox i jquery-1.7.1.min.js
źródło
Kontrolki wprowadzania HTML można wyłączyć za pomocą atrybutu „disabled”, jak wiadomo. Po ustawieniu atrybutu „wyłączony” dla kontroli wejściowej, procedury obsługi zdarzeń powiązane z taką kontrolą nie są wywoływane.
Musisz symulować powyższe zachowanie dla elementów HTML, które nie obsługują atrybutu „disabled”, takiego jak div, jeśli chcesz.
Jeśli masz div i chcesz obsługiwać kliknięcie lub kluczowe zdarzenie na tym div, musisz zrobić dwie rzeczy: 1) Jeśli chcesz wyłączyć div, ustaw jego atrybut disabled jak zwykle (tylko w celu zachowania zgodności z konwencja) 2) W modułach obsługi kliknięć i / lub klawiszach div sprawdź, czy atrybut div jest ustawiony na div. Jeśli tak, to po prostu zignoruj zdarzenie kliknięcia lub kluczowe (np. Natychmiast powróć). Jeśli wyłączony atrybut nie jest ustawiony, wykonaj logikę kliknięcia i / lub kluczowe zdarzenie div.
Powyższe kroki są również niezależne od przeglądarki.
źródło
Jednym ze sposobów na osiągnięcie tego jest dodanie niepełnosprawnego rekwizytu do wszystkich dzieci div. Możesz to bardzo łatwo osiągnąć:
$("#myDiv")
znajduje div,.find("*")
dostaje wszystkie węzły potomne na wszystkich poziomach i.prop('disabled', true)
wyłącza każdy z nich.W ten sposób cała zawartość jest wyłączona i nie można ich klikać, przechodzić do nich, przewijać itp. Nie trzeba też dodawać żadnych klas css.
źródło
Zawiń
div
wewnątrzfieldset
tagu:źródło
Myślałem, że wrzucę kilka notatek.
źródło
To jest dla poszukiwaczy,
Najlepsze, co zrobiłem, to
źródło
Jak wspomniano w komentarzach, nadal możesz uzyskać dostęp do elementu, nawigując między elementami za pomocą klawisza Tab. więc polecam to:
źródło
Jeśli chcesz zachować semantykę wyłączonych w następujący sposób
możesz dodać następujący CSS
korzyścią jest to, że nie pracujesz z klasami na div, z którymi chcesz pracować
źródło
Chciałbym użyć ulepszonej wersji funkcji Cletus:
Który przechowuje oryginalną właściwość „disabled” elementu.
źródło
Jak wyłączyć zawartość DIV
Sama
pointer-events
właściwość CSS nie wyłącza przewijania elementów potomnych i nie jest obsługiwana przez IE10 i poniżej dla elementów DIV (tylko dla SVG). http://caniuse.com/#feat=pointer-eventsAby wyłączyć zawartość DIV we wszystkich przeglądarkach.
JavaScript:
Css:
Aby wyłączyć zawartość DIV we wszystkich przeglądarkach, z wyjątkiem IE10 i niższych.
JavaScript:
Css:
źródło
Poniżej znajduje się bardziej kompleksowe rozwiązanie umożliwiające maskowanie div div
Obejmuje również klepsydrę i klepsydrę, których można używać osobno
Dzięki temu możesz na przykład:
patrz jsfiddle
źródło
źródło
Lub po prostu użyj css i klasy „wyłączonej”.
Uwaga: nie używaj atrybutu disabled.
Nie musisz zadzierać z włączaniem / wyłączaniem jQuery.
Jest to o wiele łatwiejsze i działa w różnych przeglądarkach:
Następnie możesz go włączać i wyłączać podczas inicjalizacji strony lub przełączania przycisku
źródło
Innym sposobem, w jQuery, byłoby uzyskanie wewnętrznej wysokości, wewnętrznej szerokości i położenia zawierającego DIV, i po prostu nałożenie innego DIV, przezroczystego, na górę tego samego rozmiaru. Będzie to działać na wszystkich elementach w tym kontenerze, a nie tylko na danych wejściowych.
Pamiętaj jednak, że po wyłączeniu JS nadal będziesz mógł korzystać z danych wejściowych / treści DIV. To samo dotyczy powyższych odpowiedzi.
źródło
źródło
To rozwiązanie tylko css / noscript dodaje nakładkę powyżej zestawu pól (lub div lub dowolnego innego elementu), zapobiegając interakcji:
Jeśli chcesz mieć niewidoczną, tj. Przezroczystą nakładkę, ustaw tło na np. Rgba (128, 128, 128, 08), ponieważ nie będzie działać bez tła. Powyższe działa dla IE9 +. Poniższy, znacznie prostszy css będzie działał na IE11 +
Chrom
źródło
Jeśli próbujesz po prostu powstrzymać ludzi od klikania i nie martwisz się przerażająco o bezpieczeństwo - znalazłem absolutnie umieszczony div z indeksem z 99999, to dobrze. Nie możesz kliknąć ani uzyskać dostępu do żadnej zawartości, ponieważ div jest na niej umieszczony. Może być nieco prostsze i jest rozwiązaniem CSS, dopóki nie trzeba go usunąć.
źródło
Istnieją konfigurowalne biblioteki javascript, które pobierają ciąg html lub element dom i usuwają niepożądane tagi i atrybuty. Są one znane jako środki odkażające HTML . Na przykład:
Np. W DOMPurify
źródło
EDYCJA: Poniżej użyłem
.on()
metody, zamiast tego użyj.bind()
metodyaby usunąć ustawienie, możesz użyć
.unbind()
metody. Podczas gdy.off()
metoda nie działa zgodnie z oczekiwaniami.Po zbadaniu setek rozwiązań! ucząc się o zdarzeniach wskaźnikowych, poniżej zrobiłem to.
Jak wspomniał @Kokodoko w swoim rozwiązaniu, które jest odpowiednie dla wszystkich przeglądarek oprócz IE.
pointer-events
działa w IE11, a nie w niższych wersjach. Zauważyłem również w IE11 , że zdarzenia-wskaźniki nie działają na elementach potomnych. A zatem, jeśli mamy coś jak poniżejgdzie rozpiętość -jest elementem potomnym , ustawienie
pointer-events: none
nie będzie działaćAby rozwiązać ten problem, napisałem funkcję, która może działać jako wskaźnik zdarzeń dla IE i będzie działać w niższych wersjach.
W pliku JS
W pliku CSS
W HTML
To sfałszowało
pointer-events
scenariusz, w którympointer-events
nie działa i kiedy występuje powyższy stan elementów potomnych.JS Fiddle za to samo
źródło
spójrz na mój selektor
fieldsetUserInfo
jest div zawiera wszystkie wejścia chcę wyłączony lub Włączmam nadzieję, że to ci pomoże
źródło