Ответ 1
Вы ищете:
.is(':visible')
Хотя вы, вероятно, должны изменить свой селектор, чтобы использовать jQuery, учитывая, что вы используете его в других местах:
if($('#testElement').is(':visible')) {
// Code
}
Важно отметить, что если какой-либо из родительских элементов целевого элемента скрыт, то .is(':visible')
для дочернего объекта вернет false
(что имеет смысл).
jQuery 3
:visible
имеет репутацию довольно медленного селектора, поскольку он должен проходить дерево DOM, проверяя кучу элементов. Однако хорошие новости для jQuery 3, как этот пост объясняет (Ctrl + F для :visible
):
Благодаря какой-то детективной работе Пола Ирриша в Google мы выявили некоторые случаи, когда мы могли пропустить кучу дополнительной работы, когда пользовательские селектора типа: visible используются много раз в одном документе. Этот конкретный случай теперь в 17 раз быстрее!
Имейте в виду, что даже с этим улучшением селектора типа: visible и: hidden могут быть дорогими, потому что они зависят от браузера, чтобы определить, действительно ли элементы отображаются на странице. Это может потребовать, в худшем случае, полного пересчета стилей CSS и макета страницы! Хотя мы не препятствуем их использованию в большинстве случаев, мы рекомендуем тестировать ваши страницы, чтобы определить, вызывают ли эти селекторы проблемы с производительностью.
Расширяясь еще до вашего конкретного варианта использования, существует встроенная функция jQuery, называемая $.fadeToggle()
:
function toggleTestElement() {
$('#testElement').fadeToggle('fast');
}