Все решения с точки зрения $('.someClass').is(':visible')
ненадежны. Все, что он говорит нам, это если у определенного элемента есть стиль display:none
или visibility:hidden
. Это не так же, как то, видим ли элемент!
Рассмотрим ситуацию, подобную этой:
<div style="display:none;"><div class="someClass"></div></div>
Каждый может видеть, что элемент, обозначенный $('.someClass')
, невидим. Но $('.someClass').is(':visible')
вернет true
!
Единственным водонепроницаемым решением является проверка не только is(':visible')
на $('.someClass')
, но и на всех его родительских элементах. Только если для ни один из родителей не считает, что is(':visible') === false
, мы можем заключить, что $('.someClass')
действительно видим.