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/

31voto

Kareem Punkte 4611
.is(":not(':hidden')") /*if shown*/

1 Stimmen

Denn :not(':hidden') ist nicht dasselbe wie is(':visible'). "Sichtbar" funktioniert mit der CSS-"Opazität", nicht mit JQuery-"show()/hide()". Außerdem gibt es kein zusätzliches Zitat. Jeder Satz spielt in diesem kleinen Code eine Rolle.

1 Stimmen

1) beide :visible y :hidden die Sichtbarkeit von CSS-Elementen und Vorgängern prüfen und nicht nur die display: none wie Sie jetzt vorschlagen. 2) Zitate innerhalb eines Pseudo-Selektors アール nicht erforderlich, wenn der Selektor nur : und alphanumerische Zeichen (z. B. :not(:hidden) ist dasselbe wie not(':hidden') (nur ein bisschen schneller) und 3) wie wollen Sie besser werden, wenn Sie nicht akzeptieren können, dass Sie manchmal tatsächlich falsch liegen :)

23voto

Prabhagaran Punkte 3340
if($('#id_element').is(":visible")){
   alert('shown');
}else{
   alert('hidden');
}

21voto

lmcDevloper Punkte 332

Ich habe danach gesucht, und keine der Antworten ist für meinen Fall korrekt, also habe ich eine Funktion erstellt, die false zurückgibt, wenn die Augen das Element nicht sehen können

jQuery.fn.extend({
  isvisible: function() {
    //
    //  This function call this: $("div").isvisible()
    //  Return true if the element is visible
    //  Return false if the element is not visible for our eyes
    //
    if ( $(this).css('display') == 'none' ){
        console.log("this = " + "display:none");
        return false;
    }
    else if( $(this).css('visibility') == 'hidden' ){
        console.log("this = " + "visibility:hidden");   
        return false;
    }
    else if( $(this).css('opacity') == '0' ){
        console.log("this = " + "opacity:0");
        return false;
    }   
    else{
        console.log("this = " + "Is Visible");
        return true;
    }
  }  
});

0 Stimmen

Nur ein Hinweis, wenn der Selektor eine leere Menge von Elementen zurückgibt, wird diese Methode true zurückgeben, so überprüfen Länge zuerst, wenn Sie für unsichtbare Elemente suchen: var items = jQuery('.selector'); if (items.length == 0 || !items.isVisible()) { alert('item is not visible'); }

0 Stimmen

Was ist mit Elementen, die unter anderen Elementen verborgen sind?

21voto

No one Punkte 1102

Als hide() , show() et toggle() fügt dem Element Inline-CSS (display:none oder display:block) hinzu. In ähnlicher Weise können wir den ternären Operator verwenden, um zu prüfen, ob das Element verborgen oder sichtbar ist, indem wir display CSS prüfen.

UPDATE:

  • Sie müssen auch prüfen, ob das Element mit CSS auf Sichtbarkeit eingestellt ist: "sichtbar" oder Sichtbarkeit: "versteckt"
  • Das Element ist auch sichtbar, wenn die Eigenschaft display auf inline-block, block, flex eingestellt ist.

So können wir nach der Eigenschaft eines Elements suchen, die es unsichtbar macht. Sie sind also display: none et visibility: "hidden";

Wir können ein Objekt zur Überprüfung der Eigenschaft erstellen, die für das Ausblenden des Elements verantwortlich ist:

var hiddenCssProps = {
display: "none",
visibility: "hidden"
}

Wir können überprüfen, indem wir in einer Schleife jeden Schlüsselwert im Objekt abgleichen, ob die Elementeigenschaft für den Schlüssel mit dem Wert der verborgenen Eigenschaft übereinstimmt.

var isHidden = false;
for(key in hiddenCssProps) {
  if($('#element').css(key) == hiddenCssProps[key]) {
     isHidden = true;
   }
}

Wenn Sie Eigenschaften wie Elementhöhe: 0 oder Breite: 0 oder mehr überprüfen möchten, können Sie dieses Objekt erweitern und weitere Eigenschaften hinzufügen und überprüfen können.

20voto

Alireza Punkte 92209

Prüfen Sie einfach, ob das Element sichtbar und es wird ein boolean . jQuery versteckt die Elemente durch Hinzufügen von keine Anzeige auf das Element, wenn Sie also reines JavaScript verwenden wollen, können Sie das zum Beispiel immer noch tun:

if (document.getElementById("element").style.display === 'block') {
  // Your element is visible; do whatever you'd like
}

Sie können auch jQuery verwenden, da es scheint, dass der Rest Ihres Codes verwendet wird, und Sie haben kleinere Code-Block. Etwas wie das unten in jQuery tut den gleichen Trick für Sie:

if ($(element).is(":visible")) {
    // Your element is visible, do whatever you'd like
};

Auch die Verwendung des css Methode in jQuery kann zum gleichen Ergebnis führen:

if ($(element).css('display') === 'block') {
    // Your element is visible, do whatever you'd like
}

Auch bei der Überprüfung der Sichtbarkeit und Anzeige können Sie wie folgt vorgehen:

if ($(this).css("display") === "block" || $(this).css("visibility") === "visible") {
   // Your element is visible, do whatever you'd like
}

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