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/

41voto

Andron Punkte 6017

Denn Elements with visibility: hidden or opacity: 0 are considered visible, since they still consume space in the layout (wie beschrieben für jQuery :visible Selektor ) - wir können prüfen, ob das Element wirklich auf diese Weise sichtbar:

function isElementReallyHidden (el) {
    return $(el).is(":hidden") || $(el).css("visibility") == "hidden" || $(el).css('opacity') == 0;
}

var booElementReallyShowed = !isElementReallyHidden(someEl);
$(someEl).parents().each(function () {
    if (isElementReallyHidden(this)) {
        booElementReallyShowed = false;
    }
});

39voto

RN Kushwaha Punkte 1975

Was aber, wenn das CSS des Elements wie folgt aussieht?

.element{
    position: absolute;left:-9999;    
}

Also diese Antwort auf eine Stack Overflow-Frage So prüfen Sie, ob ein Element außerhalb des Bildschirms liegt sollte ebenfalls berücksichtigt werden.

37voto

V31 Punkte 7588

Es kann eine Funktion erstellt werden, die auf Sichtbarkeits-/Anzeigeattribute prüft, um festzustellen, ob das Element auf der Benutzeroberfläche angezeigt wird oder nicht.

function checkUIElementVisible(element) {
    return ((element.css('display') !== 'none') && (element.css('visibility') !== 'hidden'));
}

Arbeitsfiedel

36voto

cssimsek Punkte 1199

Außerdem gibt es einen ternären bedingten Ausdruck, um den Zustand des Elements zu prüfen und es dann umzuschalten:

$('someElement').on('click', function(){ $('elementToToggle').is(':visible') ? $('elementToToggle').hide('slow') : $('elementToToggle').show('slow'); });

4 Stimmen

Oder, Sie wissen schon, lassen Sie einfach die gesamte Bedingung weg und sagen Sie $('elementToToggle').toggle('slow'); ... :)

34voto

Gaurav Punkte 413
if($('#postcode_div').is(':visible')) {
    if($('#postcode_text').val()=='') {
        $('#spanPost').text('\u00a0');
    } else {
        $('#spanPost').text($('#postcode_text').val());
}

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