Для проверки видимости элемента на странице у jQuery есть такие конструкции
if ($element.is(':visible')) { // если $element виден } if ($element.is(':hidden')) { // если $element не виден }
Но данные конструкции не всегда адекватно срабатывают, они якобы проверяют наличие стиля display: none, но мне попадался сайт, где у элемента при просмотре в инспекторе, четко видно display: none но условие $element.is(‘:hidden’) не срабатывало.
Возможно я был не внимательный и там были какие-то приколы со скриптами и стилями, которые динамически изменялись, что и повлияло на не работоспособность условия.
В общем если у вас та же хрень, и по каким то мифическим соображением данные условия видимости элементов не срабатывают, то можно использовать другой вариант.
Проверка видимости элемента с помощью hasClass
Суть проверки в следующем, у вас есть элемент который имеет два состояния, видимый и скрытый, эти состояния вы регулируете с помощью классов.
Например
есть элемент div, в нормальном состоянии он скрыт
а если элементу назначить класс active то он видим.
И вы проверяете наличие класса который показывает, скрыт ли элемент или видим
Пример кода
<html> <head> <script src="http://code.jquery.com/jquery-latest.min.js"></script> </head> <body> <style> .menu .block-text { display: none; } .menu .block-text.active { display: block; } </style> <div class="menu"> <div class="btn">Показать</div> <div class="block-text">Скрытый текст</div> </div> <script> $('.menu .btn').on('click', function (e) { if ($('.block-text').hasClass('active')){ // элемент виден $('.block-text').removeClass('active'); } else { // элемент скрыт $('.block-text').addClass('active'); } return false; }); </script> </body> </html>