Jak sprawdzić, czy element jest ukryty w jQuery?

Czy można przełączyć widoczność elementu, korzystając z funkcji .hide(), .show() albo .toggle()?

Jak sprawdzić, czy element jest visible lub hidden?

Author: Nicolas Gervais, 2008-10-07

30 answers

Ponieważ pytanie odnosi się do pojedynczego elementu, ten kod może być bardziej odpowiedni:

// Checks CSS content for display:[none|block], ignores visibility:[true|false]
$(element).is(":visible");

// The same works with hidden
$(element).is(":hidden");

Jest taka sama jak sugestia twernta , ale zastosowana do pojedynczego elementu; i pasuje do algorytmu zalecanego w jQuery FAQ .

Używamy jQuery is (), aby sprawdzić zaznaczony element za pomocą innego elementu, selektora lub dowolnego obiektu jQuery. Metoda ta przemieszcza się wzdłuż elementów DOM, aby znaleźć dopasowanie, które spełnia przekazany parametr. Zwróci true jeśli jest dopasowanie, w przeciwnym razie zwróć false.

 9680
Author: Tsvetomir Tsonev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-06 13:38:53

Możesz użyć hidden selektor:

// Matches all elements that are hidden
$('element:hidden')

I visible selektor:

// Matches all elements that are visible
$('element:visible')
 1520
Author: twernt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-08 15:38:27
if ( $(element).css('display') == 'none' || $(element).css("visibility") == "hidden"){
    // 'element' is hidden
}

Powyższa metoda nie uwzględnia widoczności rodzica. Aby wziąć pod uwagę rodzica, należy użyć .is(":hidden") lub .is(":visible").

Na przykład,

<div id="div1" style="display:none">
  <div id="div2" style="display:block">Div2</div>
</div>

Powyższa metoda uzna div2 za widoczną, podczas gdy :visible nie. Ale powyższe może być przydatne w wielu przypadkach, zwłaszcza gdy trzeba znaleźć, czy jest jakiś błąd div widoczny w ukrytym rodzicu, ponieważ w takich warunkach :visible nie będzie działać.

 994
Author: Mote,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-06 13:39:38

Żadna z tych odpowiedzi nie odnosi się do tego, co rozumiem, że jest pytaniem, którego szukałem, "Jak poradzić sobie z przedmiotami, które mają visibility: hidden?". Ani :visible, ani :hidden nie zajmą się tym, ponieważ oboje szukają wyświetlacza zgodnie z dokumentacją. O ile mogę określić, nie ma selektora do obsługi widoczności CSS. Oto jak to rozwiązałem (standardowe selektory jQuery, może być bardziej skondensowana składnia):

$(".item").each(function() {
    if ($(this).css("visibility") == "hidden") {
        // handle non visible state
    } else {
        // handle visible state
    }
});
 553
Author: aaronLile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-26 07:12:02

Od Jak określić stan elementu przełączanego?


Można określić, czy Element jest zwinięty, czy nie, używając selektorów :visible i :hidden.

var isVisible = $('#myDiv').is(':visible');
var isHidden = $('#myDiv').is(':hidden');

Jeśli po prostu działasz na elemencie w oparciu o jego widoczność, możesz po prostu umieścić :visible lub :hidden w wyrażeniu selektora. Na przykład:

 $('#myDiv:visible').animate({left: '+=200px'}, 'slow');
 408
Author: user574889,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-12 14:08:58

Często sprawdzając, czy coś jest widoczne, czy nie, natychmiast idziesz do przodu i robisz z tym coś innego. jQuery chaining ułatwia to.

Więc jeśli masz Selektor i chcesz wykonać na nim jakąś akcję tylko wtedy, gdy jest widoczny lub ukryty, możesz użyć filter(":visible") lub filter(":hidden"), a następnie połączyć go z akcją, którą chcesz wykonać.

Więc zamiast if wypowiedź w ten sposób:

if ($('#btnUpdate').is(":visible"))
{
     $('#btnUpdate').animate({ width: "toggle" });   // Hide button
}

Lub bardziej wydajne, ale jeszcze brzydsze:

var button = $('#btnUpdate');
if (button.is(":visible"))
{
     button.animate({ width: "toggle" });   // Hide button
}

Możesz zrób to wszystko w jednej linii:

$('#btnUpdate').filter(":visible").animate({ width: "toggle" });
 308
Author: Simon_Weaver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-27 20:10:05

Selektor :visible według dokumentacji jQuery :

  • mają wartość CSS display none.
  • są elementami postaci z type="hidden".
  • ich szerokość i wysokość są jawnie ustawione na 0.
  • element nadrzędny jest ukryty, więc element ten nie jest wyświetlany na stronie.

Elementy z visibility: hidden lub opacity: 0 są uważane za widoczne, ponieważ nadal zajmują miejsce w układzie.

To jest przydatne w niektórych przypadkach i bezużyteczne w innych, ponieważ jeśli chcesz sprawdzić, czy element jest widoczny (display != none), ignorując widoczność rodziców, przekonasz się, że wykonanie .css("display") == 'none' jest nie tylko szybsze, ale również zwróci sprawdzenie widoczności poprawnie.

Jeśli chcesz sprawdzić widoczność zamiast wyświetlacza, powinieneś użyć: .css("visibility") == "hidden".

Weź również pod uwagę dodatkowe uwagi jQuery :

Ponieważ {[0] } jest rozszerzeniem jQuery, a nie częścią CSS Specyfikacja, zapytania przy użyciu :visible nie mogą wykorzystać zwiększenia wydajności dostarczanej przez natywną metodę DOM querySelectorAll(). Aby uzyskać najlepszą wydajność przy użyciu :visible do zaznaczania elementów, najpierw wybierz elementy za pomocą czystego selektora CSS, a następnie użyj .filter(":visible").

Ponadto, jeśli martwisz się o wydajność, powinieneś sprawdzić teraz widzisz mnie ... Pokaż/Ukryj (2010-05-04). I użyj innych metod, aby pokazać i ukryć elementy.

 254
Author: Pedro Rainho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-21 01:41:47

To działa dla mnie i używam show() i hide() aby mój div był ukryty/widoczny:

if( $(this).css('display') == 'none' ){
    /* your code goes here */
} else {
    /* alternate logic   */
}
 224
Author: Abiy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-14 21:32:03

Jak widoczność elementu i jQuery działa;

Element może być ukryty z display:none, visibility:hidden lub opacity:0. Różnica między tymi metodami:

  • display:none ukrywa element i nie zajmuje on żadnej spacji;
  • visibility:hidden ukrywa element, ale nadal zajmuje miejsce w układzie;
  • opacity:0 ukrywa element jako "widoczność: Ukryty" i nadal zajmuje miejsce w układzie; jedyną różnicą jest to, że krycie pozwala na tworzy element częściowo przezroczysty;

    if ($('.target').is(':hidden')) {
      $('.target').show();
    } else {
      $('.target').hide();
    }
    if ($('.target').is(':visible')) {
      $('.target').hide();
    } else {
      $('.target').show();
    }
    
    if ($('.target-visibility').css('visibility') == 'hidden') {
      $('.target-visibility').css({
        visibility: "visible",
        display: ""
      });
    } else {
      $('.target-visibility').css({
        visibility: "hidden",
        display: ""
      });
    }
    
    if ($('.target-visibility').css('opacity') == "0") {
      $('.target-visibility').css({
        opacity: "1",
        display: ""
      });
    } else {
      $('.target-visibility').css({
        opacity: "0",
        display: ""
      });
    }
    

    Przydatne metody przełączania jQuery:

    $('.click').click(function() {
      $('.target').toggle();
    });
    
    $('.click').click(function() {
      $('.target').slideToggle();
    });
    
    $('.click').click(function() {
      $('.target').fadeToggle();
    });
    
 223
Author: webvitaly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-30 22:00:31

Można to również zrobić za pomocą zwykłego JavaScript:

function isRendered(domObj) {
    if ((domObj.nodeType != 1) || (domObj == document.body)) {
        return true;
    }
    if (domObj.currentStyle && domObj.currentStyle["display"] != "none" && domObj.currentStyle["visibility"] != "hidden") {
        return isRendered(domObj.parentNode);
    } else if (window.getComputedStyle) {
        var cs = document.defaultView.getComputedStyle(domObj, null);
        if (cs.getPropertyValue("display") != "none" && cs.getPropertyValue("visibility") != "hidden") {
            return isRendered(domObj.parentNode);
        }
    }
    return false;
}

Uwagi:

  1. Działa wszędzie

  2. Działa dla zagnieżdżonych elementów

  3. Działa dla stylów CSS i inline

  4. Nie wymaga frameworka

 171
Author: Matt Brock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-19 08:15:29

Użyłbym klasy CSS .hide { display: none!important; }.

Do ukrycia / pokazania, wzywam .addClass("hide")/.removeClass("hide"). Do sprawdzania widoczności używam .hasClass("hide").

Jest to prosty i przejrzysty sposób sprawdzania/ukrywania / pokazywania elementów, jeśli nie planujesz użyć metod .toggle() lub .animate().

 170
Author: Evgeny Levin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-19 08:15:37

Link Demo

$('#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"/>

Źródło:

Blogger Plug n Play-narzędzia i widżety jQuery: Jak sprawdzić, czy Element jest ukryty lub widoczny za pomocą jQuery

 146
Author: Code Spy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-27 07:08:33

Można po prostu użyć atrybutu hidden lub visible, np.:

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

Lub można uprościć to samo z jest w następujący sposób.

$(element).is(":visible")
 141
Author: ScoRpion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-16 10:04:04

ebdiv powinno być ustawione na style="display:none;". Działa zarówno dla pokaż i ukryj:

$(document).ready(function(){
    $("#eb").click(function(){
        $("#ebdiv").toggle();
    });    
});
 139
Author: Vaishu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-26 07:33:26

Kolejną odpowiedzią, którą powinieneś wziąć pod uwagę, jest to, że jeśli ukrywasz element, powinieneś użyć jQuery, ale zamiast go ukrywać, usuwasz cały element, ale kopiujesz jego zawartość HTML i sam znacznik do zmiennej jQuery, a następnie wszystko, co musisz zrobić, to sprawdzić, czy istnieje taki znacznik na ekranie, używając normalnego if (!$('#thetagname').length).

 126
Author: Lucas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-26 22:12:11

Podczas testowania elementu na selektorze :hidden w jQuery należy wziąć pod uwagę, że element pozycjonowany bezwzględnie może zostać rozpoznany jako ukryty, chociaż jego elementy potomne są widoczne.

W pierwszej kolejności wydaje się to nieco sprzeczne z intuicją – choć bliższe przyjrzenie się dokumentacji jQuery daje istotne informacje:

Elementy można uznać za Ukryte z kilku powodów: [...] Ich szerokość i wysokość są jawnie ustawione na 0. [...]

Więc to ma sens w odniesieniu do modelu pudełkowego i obliczonego stylu elementu. Nawet jeśli szerokość i wysokość nie są ustawione jawnie na 0, mogą być ustawione domyślnie.

Spójrz na poniższy przykład:

console.log($('.foo').is(':hidden')); // true
console.log($('.bar').is(':hidden')); // false
.foo {
  position: absolute;
  left: 10px;
  top: 10px;
  background: #ff0000;
}

.bar {
  position: absolute;
  left: 10px;
  top: 10px;
  width: 20px;
  height: 20px;
  background: #0000ff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="foo">
  <div class="bar"></div>
</div>

Aktualizacja dla jQuery 3.x:

W jQuery 3 opisane zachowanie ulegnie zmianie! Elementy będą uważane za widoczne, jeśli mają jakieś pola układu, włącznie z tymi o zerowej szerokości i/lub wysokości.

JSFiddle with jQuery 3.0.0-alpha1:

Http://jsfiddle.net/pM2q3/7/

Ten sam kod JavaScript będzie miał następujące wyjście:

console.log($('.foo').is(':hidden')); // false
console.log($('.bar').is(':hidden')); // false
 107
Author: conceptdeluxe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-06 13:45:33

To może działać:

expect($("#message_div").css("display")).toBe("none");
 94
Author: Maneesh Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-06 06:41:05

Przykład:

$(document).ready(function() {
  if ($("#checkme:hidden").length) {
    console.log('Hidden');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="checkme" class="product" style="display:none">
  <span class="itemlist"><!-- Shows Results for Fish --></span> Category:Fish
  <br>Product: Salmon Atlantic
  <br>Specie: Salmo salar
  <br>Form: Steaks
</div>
 78
Author: Irfan DANISH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-16 13:52:00

Aby sprawdzić czy nie jest widoczny używam !:

if ( !$('#book').is(':visible')) {
    alert('#book is not visible')
}

Lub poniższy jest również sam, zapisując selektor jQuery w zmiennej, aby uzyskać lepszą wydajność, gdy potrzebujesz go wiele razy:

var $book = $('#book')

if(!$book.is(':visible')) {
    alert('#book is not visible')
}
 70
Author: Matthias Wegtun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-14 08:01:52

Użyj przełączania klas, a nie edycji stylu . . .

Używanie klas przeznaczonych do "ukrywania" elementów jest łatwe i jednocześnie jedną z najskuteczniejszych metod. Przełączenie klasy ' hidden 'ze stylem Display 'none' będzie działać szybciej niż bezpośrednia edycja tego stylu. Wyjaśniłem trochę tego dość dokładnie w pytaniu o przepełnienie stosu obracanie dwóch elementów widocznych / ukrytych w tym samym div.


Najlepsze praktyki i optymalizacja JavaScript

Oto prawdziwie w 2011 roku Google ogłosiło, że Google nie będzie miało dostępu do swoich danych osobowych.]}

 64
Author: Lopsided,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Przykład użycia widoczny sprawdzanie, czy AdBlocker jest aktywowany:

$(document).ready(function(){
  if(!$("#ablockercheck").is(":visible"))
    $("#ablockermsg").text("Please disable adblocker.").show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ad-placement" id="ablockercheck"></div>
<div id="ablockermsg" style="display: none"></div>

"ABLOCKERCHECK" jest identyfikatorem, który blokuje adblocker. Więc sprawdzając, czy jest widoczny, jesteś w stanie wykryć, czy adblocker jest włączony.

 62
Author: Roman Losev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-13 14:07:43

W końcu żaden z przykładów mi nie odpowiada, więc napisałem swój.

Testy (brak wsparcia dla Internet Explorera filter:alpha):

A) sprawdź, czy dokument nie jest ukryty

B) sprawdzić, czy element ma zerową szerokość / wysokość / krycie lub display:none / visibility:hidden inline style

C) sprawdź, czy środek (również dlatego, że jest szybszy niż testowanie każdego piksela / rogu) elementu nie jest ukryty przez inny element (i wszystkich przodków, przykład: overflow:hidden / scroll / jeden element nad drugim) lub krawędzie ekranu

D) sprawdź, czy element ma zerową szerokość / wysokość / krycie lub display:none / widoczność: ukryta w obliczonych stylach (wśród wszystkich przodków)

Testowane na

[7]}Android 4.4 (natywna przeglądarka/Chrome/Firefox), Firefox (Windows/Mac), Chrome (Windows/Mac), Opera (Windows Presto /Mac WebKit), Internet Explorer (Internet Explorer 5-11 trybów dokumentów + Internet Explorer 8 na maszynie wirtualnej) i Safari (Windows/Mac/iOS).
var is_visible = (function () {
    var x = window.pageXOffset ? window.pageXOffset + window.innerWidth - 1 : 0,
        y = window.pageYOffset ? window.pageYOffset + window.innerHeight - 1 : 0,
        relative = !!((!x && !y) || !document.elementFromPoint(x, y));
        function inside(child, parent) {
            while(child){
                if (child === parent) return true;
                child = child.parentNode;
            }
        return false;
    };
    return function (elem) {
        if (
            document.hidden ||
            elem.offsetWidth==0 ||
            elem.offsetHeight==0 ||
            elem.style.visibility=='hidden' ||
            elem.style.display=='none' ||
            elem.style.opacity===0
        ) return false;
        var rect = elem.getBoundingClientRect();
        if (relative) {
            if (!inside(document.elementFromPoint(rect.left + elem.offsetWidth/2, rect.top + elem.offsetHeight/2),elem)) return false;
        } else if (
            !inside(document.elementFromPoint(rect.left + elem.offsetWidth/2 + window.pageXOffset, rect.top + elem.offsetHeight/2 + window.pageYOffset), elem) ||
            (
                rect.top + elem.offsetHeight/2 < 0 ||
                rect.left + elem.offsetWidth/2 < 0 ||
                rect.bottom - elem.offsetHeight/2 > (window.innerHeight || document.documentElement.clientHeight) ||
                rect.right - elem.offsetWidth/2 > (window.innerWidth || document.documentElement.clientWidth)
            )
        ) return false;
        if (window.getComputedStyle || elem.currentStyle) {
            var el = elem,
                comp = null;
            while (el) {
                if (el === document) {break;} else if(!el.parentNode) return false;
                comp = window.getComputedStyle ? window.getComputedStyle(el, null) : el.currentStyle;
                if (comp && (comp.visibility=='hidden' || comp.display == 'none' || (typeof comp.opacity !=='undefined' && comp.opacity != 1))) return false;
                el = el.parentNode;
            }
        }
        return true;
    }
})();

Jak użycie:

is_visible(elem) // boolean
 62
Author: Aleko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-06 13:44:05

Musisz sprawdzić oba... Wyświetlacz jak i widoczność:

if ($(this).css("display") == "none" || $(this).css("visibility") == "hidden") {
    // The element is not visible
} else {
    // The element is visible
}

Jeśli sprawdzimy $(this).is(":visible"), jQuery sprawdza obie rzeczy automatycznie.

 54
Author: Premshankar Tiwari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-19 15:23:42

Może uda Ci się zrobić coś takiego

$(document).ready(function() {
   var visible = $('#tElement').is(':visible');

   if(visible) {
      alert("visible");
                    // Code
   }
   else
   {
      alert("hidden");
   }
});
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>

<input type="text" id="tElement" style="display:block;">Firstname</input>
 44
Author: Mathias Stavrou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-02 12:59:24

Po prostu sprawdź widoczność, sprawdzając wartość logiczną, taką jak:

if (this.hidden === false) {
    // Your code
}

Użyłem tego kodu dla każdej funkcji. W przeciwnym razie możesz użyć is(':visible') do sprawdzania widoczności elementu.

 40
Author: pixellabme,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-16 13:56:39

Ponieważ Elements with visibility: hidden or opacity: 0 are considered visible, since they still consume space in the layout (jak opisano dla jQuery :visible Selector ) - możemy sprawdzić, czy element jest naprawdę widoczny w ten sposób:

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;
    }
});
 38
Author: Andron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-20 10:32:25

Ale co jeśli CSS elementu jest następujący?

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

Więc Ta odpowiedź na pytanie Stack Overflow Jak sprawdzić, czy element jest poza ekranem należy również rozważyć.

 36
Author: RN Kushwaha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:02

Można utworzyć funkcję w celu sprawdzenia atrybutów widoczności/wyświetlania w celu sprawdzenia, czy element jest wyświetlany w interfejsie użytkownika, czy nie.

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

Working Fiddle

 34
Author: V31,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-22 11:23:57

Również tutaj jest trójdzielne wyrażenie warunkowe, aby sprawdzić stan elementu, a następnie go przełączyć:

$('someElement').on('click', function(){ $('elementToToggle').is(':visible') ? $('elementToToggle').hide('slow') : $('elementToToggle').show('slow'); });
 33
Author: cssimsek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-05 23:32:02
if($('#postcode_div').is(':visible')) {
    if($('#postcode_text').val()=='') {
        $('#spanPost').text('\u00a0');
    } else {
        $('#spanPost').text($('#postcode_text').val());
}
 32
Author: Gaurav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-07 13:51:23