Ich ging davon aus, dass, wenn ich ein Div deaktivierte, auch alle Inhalte deaktiviert wurden.
Der Inhalt ist jedoch grau, aber ich kann trotzdem damit interagieren.
Gibt es eine Möglichkeit, das zu tun? (Deaktiviere ein Div und deaktiviere auch alle Inhalte)
javascript
jquery
html
Juan
quelle
quelle
Verwenden Sie ein Framework wie JQuery, um Folgendes zu tun:
Das Deaktivieren und Aktivieren von Eingabeelementen in einem Div-Block mit jQuery sollte Ihnen helfen!
Ab jQuery 1.6 sollten Sie
.prop
anstelle von.attr
zum Deaktivieren verwenden.quelle
Ich wollte nur diese Erweiterungsmethode zum Aktivieren und Deaktivieren von Elementen erwähnen . Ich denke, es ist viel sauberer als das direkte Hinzufügen und Entfernen von Attributen.
Dann machst du einfach:
quelle
Hier ist ein kurzer Kommentar für Leute, die kein div, sondern nur ein Blockelement benötigen. In HTML5
<fieldset disabled="disabled"></fieldset>
wurde das Attribut deaktiviert. Jedes Formularelement in einem deaktivierten Feldsatz ist deaktiviert.quelle
Das Attribut disabled ist nicht Teil der W3C-Spezifikation für DIV-Elemente , sondern nur für Formularelemente .
Der von Martin vorgeschlagene jQuery-Ansatz ist der einzige narrensichere Weg, dies zu erreichen.
quelle
Ähnlich wie bei Cletus Lösung, aber bei der Verwendung dieser Lösung ist ein Fehler aufgetreten. Dies ist die Problemumgehung:
funktioniert gut bei mir
quelle
Mit dieser einfachen CSS-Anweisung können Sie Ereignisse deaktivieren
quelle
Getestete Browser: IE 9, Chrome, Firefox und jquery-1.7.1.min.js
quelle
Wie Sie wissen, können HTML-Eingabesteuerelemente mithilfe des Attributs 'disabled' deaktiviert werden. Sobald das Attribut 'disabled' für ein Eingabesteuerelement festgelegt wurde, werden die mit diesem Steuerelement verknüpften Ereignishandler nicht mehr aufgerufen.
Sie müssen das obige Verhalten für HTML-Elemente simulieren, die das Attribut 'disabled' wie div nicht unterstützen, wenn Sie dies wünschen.
Wenn Sie ein Div haben und das Klicken oder ein Schlüsselereignis für dieses Div unterstützen möchten, müssen Sie zwei Dinge tun: 1) Wenn Sie das Div deaktivieren möchten, setzen Sie sein deaktiviertes Attribut wie gewohnt (nur um das zu erfüllen) Konvention) 2) Überprüfen Sie in den Klick- und / oder Schlüsselhandlern Ihres Divs, ob das Attribut deaktiviert für das Div festgelegt ist. Wenn dies der Fall ist, ignorieren Sie einfach das Klick- oder Schlüsselereignis (z. B. kehren Sie sofort zurück). Wenn das Attribut disabled nicht festgelegt ist, führen Sie die Klick- und / oder Schlüsselereignislogik Ihres Div aus.
Die obigen Schritte sind ebenfalls browserunabhängig.
quelle
Eine Möglichkeit, dies zu erreichen, besteht darin, allen Kindern des Div die behinderte Requisite hinzuzufügen. Sie können dies sehr leicht erreichen:
$("#myDiv")
Findet das Div,.find("*")
ruft alle untergeordneten Knoten in allen Ebenen ab und.prop('disabled', true)
deaktiviert jeden einzelnen.Auf diese Weise werden alle Inhalte deaktiviert und Sie können nicht darauf klicken, zu ihnen navigieren, sie scrollen usw. Außerdem müssen Sie keine CSS-Klassen hinzufügen.
quelle
Wickeln Sie das
div
in einfieldset
Tag ein:quelle
Ich dachte, ich würde ein paar Notizen einspielen.
quelle
Dies ist für die Suchenden,
Das Beste, was ich getan habe, ist:
quelle
Wie in den Kommentaren erwähnt, können Sie weiterhin auf Elemente zugreifen, indem Sie mithilfe der Tabulatortaste zwischen den Elementen navigieren. also empfehle ich folgendes:
quelle
Wenn Sie die Semantik von deaktiviert wie folgt beibehalten möchten
Sie können das folgende CSS hinzufügen
Der Vorteil hierbei ist, dass Sie nicht mit Klassen auf dem Div arbeiten, mit dem Sie arbeiten möchten
quelle
Ich würde eine verbesserte Version von Cletus 'Funktion verwenden:
Hiermit wird die ursprüngliche Eigenschaft 'disabled' des Elements gespeichert.
quelle
So deaktivieren Sie den Inhalt eines DIV
Die CSS-
pointer-events
Eigenschaft allein verhindert nicht, dass untergeordnete Elemente gescrollt werden, und wird von IE10 und darunter für DIV-Elemente nicht unterstützt (nur für SVG). http://caniuse.com/#feat=pointer-eventsSo deaktivieren Sie den Inhalt eines DIV in allen Browsern.
Javascript:
CSS:
So deaktivieren Sie den Inhalt eines DIV in allen Browsern außer IE10 und darunter.
Javascript:
CSS:
quelle
Im Folgenden finden Sie eine umfassendere Lösung zum Aktivieren der Aktivierung von Divs
Ebenfalls enthalten sind SanduhrOn und SanduhrOff, die separat verwendet werden können
Damit können Sie zum Beispiel:
siehe jsfiddle
quelle
quelle
Oder verwenden Sie einfach CSS und eine "deaktivierte" Klasse.
Hinweis: Verwenden Sie nicht das Attribut disabled.
Sie müssen sich nicht mit jQuery ein- und ausschalten.
Dies ist viel einfacher und funktioniert browserübergreifend:
Anschließend können Sie es beim Initialisieren Ihrer Seite oder beim Umschalten einer Schaltfläche ein- und ausschalten
quelle
Eine andere Möglichkeit in jQuery wäre, die innere Höhe, innere Breite und Position des enthaltenen DIV zu ermitteln und einfach einen anderen transparenten DIV über die gleiche Größe zu legen. Dies funktioniert für alle Elemente in diesem Container anstatt nur für die Eingaben.
Denken Sie jedoch daran, dass Sie bei deaktiviertem JS weiterhin die Eingaben / Inhalte der DIVs verwenden können. Gleiches gilt auch für die obigen Antworten.
quelle
quelle
Diese Nur-CSS / Noscript-Lösung fügt eine Überlagerung über einer Feldmenge (oder einem Div oder einem anderen Element) hinzu, um Interaktionen zu verhindern:
Wenn Sie eine unsichtbare, dh transparente Überlagerung wünschen, setzen Sie den Hintergrund auf z. B. rgba (128,128,128,0), da dies ohne Hintergrund nicht funktioniert. Das obige funktioniert für IE9 +. Das folgende viel einfachere CSS funktioniert unter IE11 +
Chrom
quelle
Wenn Sie einfach versuchen, das Klicken von Personen zu stoppen, und sich keine schrecklichen Sorgen um die Sicherheit machen, habe ich ein absolut platziertes Div mit einem Z-Index von 99999 gefunden. Sie können auf keinen Inhalt klicken oder darauf zugreifen, da das div darüber platziert ist. Könnte etwas einfacher sein und ist eine reine CSS-Lösung, bis Sie sie entfernen müssen.
quelle
Es gibt konfigurierbare Javascript-Bibliotheken, die eine HTML-Zeichenfolge oder ein Dom-Element aufnehmen und unerwünschte Tags und Attribute entfernen. Diese sind bekannt als HTML-Desinfektionsmittel bezeichnet . Zum Beispiel:
ZB in DOMPurify
quelle
EDIT: Unten habe ich
.on()
Methode verwendet, stattdessen.bind()
Methode verwendenUm Ihre Einstellung zu entfernen, können Sie die
.unbind()
Methode verwenden. Während die.off()
Methode nicht wie erwartet funktioniert.Nach der Erforschung von Hunderten von Lösungen! Im Folgenden habe ich etwas über Zeigerereignisse gelernt.
Wie @Kokodoko in seiner Lösung erwähnte, die für alle Browser außer IE geeignet ist.
pointer-events
arbeiten in IE11 und nicht in den niedrigeren Versionen. Ich habe auch in IE11 festgestellt , dass Zeigerereignisse bei den untergeordneten Elementen nicht funktionieren. Und daher, wenn wir so etwas wie unten habenWo span -ist das untergeordnete Element ist ,
pointer-events: none
funktioniert die Einstellung nichtUm dieses Problem zu lösen, habe ich eine Funktion geschrieben, die als Zeigerereignisse für den IE fungieren kann und in den niedrigeren Versionen funktioniert.
In der JS-Datei
In der CSS-Datei
In HTML
Dies fälschte das
pointer-events
Szenario wopointer-events
nicht funktioniert und in dem die oben genannten Bedingungen für untergeordnete Elemente auftreten.JS Fiddle für das gleiche
quelle
Schau dir meinen Selektor an
Das
fieldsetUserInfo
is div enthält alle Eingänge, die ich deaktivieren oder aktivieren möchtehoffe das hilft dir
quelle