Ist es möglich, die Sichtbarkeit eines Elements umzuschalten, indem man die Funktionen .hide()
, .show()
ou .toggle()
?
Wie würden Sie testen, ob ein Element visible
ou hidden
?
Ist es möglich, die Sichtbarkeit eines Elements umzuschalten, indem man die Funktionen .hide()
, .show()
ou .toggle()
?
Wie würden Sie testen, ob ein Element visible
ou hidden
?
Ich würde die CSS-Klasse .hide { display: none!important; }
.
Zum Verstecken/Zeigen rufe ich auf .addClass("hide")/.removeClass("hide")
. Um die Sichtbarkeit zu überprüfen, verwende ich .hasClass("hide")
.
Es ist eine einfache und klare Möglichkeit, Elemente zu prüfen/auszublenden/anzuzeigen, wenn Sie nicht vorhaben, die .toggle()
ou .animate()
Methoden.
.hasClass('hide')
prüft nicht, ob ein Vorfahre des Elternteils ausgeblendet ist (was diesen ebenfalls ausblenden würde). Sie könnten dies möglicherweise richtig hinbekommen, indem Sie prüfen, ob .closest('.hide').length > 0
aber warum das Rad neu erfinden?
Die von Ihnen vorgeschlagene Variante gibt zurück, wenn das Element auf der HTML-Seite sichtbar ist, meine Variante gibt zurück, wenn das Element direkt von Ihrem Javascript-Code/View-Engine verborgen wurde. Wenn Sie wissen, dass übergeordnete Elemente niemals ausgeblendet werden sollten - verwenden Sie .hasClass(), um strenger zu sein und zukünftige Bugs zu verhindern. Wenn Sie nicht nur die Sichtbarkeit, sondern auch den Status des Elements prüfen wollen, verwenden Sie .hasClass(). In anderen Fällen ist .closest() besser.
$('#clickme').click(function() {
$('#book').toggle('slow', function() {
// Animation complete.
alert($('#book').is(":visible")); //<--- TRUE if Visible False if Hidden
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="clickme">
Click here
</div>
<img id="book" src="https://upload.wikimedia.org/wikipedia/commons/8/87/Google_Chrome_icon_%282011%29.png" alt="" width="300"/>
Quelle (aus meinem Blog):
Eine weitere Antwort, die Sie in Betracht ziehen sollten, ist, dass Sie, wenn Sie ein Element ausblenden, die Option jQuery aber anstatt es tatsächlich zu verstecken, entfernen Sie das ganze Element, kopieren aber seine HTML Inhalt und das Tag selbst in eine jQuery-Variable, und dann müssen Sie nur noch testen, ob ein solches Tag auf dem Bildschirm vorhanden ist, indem Sie die normale if (!$('#thetagname').length)
.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
68 Stimmen
Es ist erwähnenswert (auch nach all dieser Zeit), dass
$(element).is(":visible")
funktioniert für jQuery 1.4.4, aber nicht für jQuery 1.3.2, unter Internet Explorer 8 . Dies kann getestet werden mit Tsvetomir Tsonevs hilfreiches Test-Snippet . Denken Sie einfach daran, die Version von jQuery zu ändern, um unter jedem zu testen.5 Stimmen
Dies ist eine verwandte, wenn auch andere Frage: stackoverflow.com/questions/17425543/
2 Stimmen
Wenn Sie nicht an der virtuellen Ausblendung von CSS-Elementen interessiert sind, sondern an der physischen Sichtbarkeit im "Viewport-Bereich" für den Benutzer, dann sollten Sie sich Folgendes ansehen stackoverflow.com/questions/487073/ y stackoverflow.com/questions/123999/