8662 Stimmen

Wie prüfe ich, ob ein Element in jQuery ausgeblendet ist?

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 ?

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/

181voto

Evgeny Levin Punkte 6247

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.

13 Stimmen

.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?

2 Stimmen

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.

159voto

Code Spy Punkte 8650

Demo-Link

$('#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):

Blogger Plug n Play - jQuery Tools und Widgets: Wie man mit jQuery sieht, ob ein Element versteckt oder sichtbar ist

2 Stimmen

@Adrew, aber dieser Link zeigt ein funktionierendes Beispiel für diese Funktion. Ich denke, eine praktische Antwort kann über eine ganze Seite Text Gewicht :)

149voto

Vaishu Punkte 2245

ebdiv sollte eingestellt werden auf style="display:none;" . Sie funktioniert sowohl beim Ein- als auch beim Ausblenden:

$(document).ready(function(){
    $("#eb").click(function(){
        $("#ebdiv").toggle();
    });    
});

147voto

ScoRpion Punkte 11156

Man kann einfach die hidden ou visible Attribut, wie:

$('element:hidden')
$('element:visible')

Oder Sie können das Gleiche vereinfachen mit ist wie folgt.

$(element).is(":visible")

135voto

Lucas Punkte 16340

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.com

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.

Powered by:

X