jQuery: height()/width() und „display:none“
In diesem Szenario wird das Element mit der ID „target Die Anzeigeeigenschaft von „ ist über CSS auf „none“ gesetzt. Bei der Überprüfung der Höhe mit $("#target").height() wird jedoch ein Wert ungleich Null erhalten.
Dieses Verhalten ergibt sich aus der internen Verarbeitung versteckter Elemente durch jQuery beim Zugriff auf deren Abmessungen. Wenn ein Element eine offsetWidth von 0 hat (von jQuery als „versteckt“ betrachtet), versucht die Bibliothek, seine Höhe zu bestimmen.
Um dies zu erreichen, wendet jQuery vorübergehend die folgenden Eigenschaften auf das Element an:
Dann wird die Höhe mit getWidthOrHeight(... abgerufen) ), das nach Bedarf Rahmen/Abstände hinzufügt und die ursprünglichen Eigenschaften wiederherstellt.
Im Wesentlichen zeigt jQuery das Element diskret an, erhält seine Höhe und verbirgt es dann wieder. Dies geschieht, bevor der UI-Thread aktualisiert werden kann, sodass der Benutzer nichts von dem Prozess mitbekommt.
Dieser Mechanismus ermöglicht es, dass .height()/.width() auch bei ausgeblendeten Elementen funktioniert, sofern ihre übergeordneten Elemente sichtbar sind. Daher können Sie .height()/.width() aufrufen, ohne die Show-/Hide-Sequenz manuell durchzuführen, da sie intern von diesen Methoden verarbeitet wird.
Das obige ist der detaillierte Inhalt vonWarum gibt „jQuery.height()' einen Wert für ein ausgeblendetes Element zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!