Это правда, что вы можете использовать, is(":visible")но по опыту я рекомендую использовать классы, чтобы у вас не было проблем при тестировании ваших приложений, поскольку во многих тестовых библиотеках тестируемые компоненты не видны, и независимо от того, сколько ваш компонент делает hide()или show()jQuery все равно будет указывать, что его не видно, и поведение ваших компонентов будет странным. Это случилось со мной с тестовой библиотекой QUnit от авторов jQuery.
Я бы сделал так: $el.toggleClass("hide")или $el.addClass("hide").
И проверьте это с помощью: !$el.hasClass("hide").
Кроме того, следует соблюдать осторожность при их использовании , is(":visible")поскольку visibility: hiddenони opacity: 0считаются видимыми, поскольку занимают место в макете.
Обратите внимание, что мое решение состоит в том, чтобы проверить, виден ли только элемент. Может случиться так, что один из родителей не виден и, следовательно, не виден. Если вы хотите проверить что-то подобное, возможно, лучше использовать is(":visible")или !$(..).closest(".hide").
if($('#elemento').css('display') == 'none'){
// Acción si el elemento no es visible
}else{
// Acción si el elemento es visible
}
В случае, если мы также хотим проверить непрозрачность, мы делаем:
if($('#elemento').css('display') == 'none' || $('#elemento').css('opacity') == 0){
// Acción si el elemento no es visible
}else{
// Acción si el elemento es visible
}
Я участвовал в этом конкретном случае, когда начального решения было бы достаточно:
if ($elementoDOM.is(':visible')){ console.log('el elemento está visible') }
НО! Будьте осторожны, как сказал коллега в других комментариях, это не относится к элементам, у которых есть свойство: opacity:0.
Лично я чаще всего использую with opacity, так как таким образом можно эстетически анимировать появление/исчезновение элементов в DOM. Причина, по которой точное утверждение, которое только что сработало для меня, таково:
if ($elementoDOM.css('opacity')==1) { ... } ó
if ($elementoDOM.css('opacity')==0) { ... }
будьте осторожны, не заключайте число (0,1) в одинарные или двойные кавычки!
Это правда, что вы можете использовать,
is(":visible")
но по опыту я рекомендую использовать классы, чтобы у вас не было проблем при тестировании ваших приложений, поскольку во многих тестовых библиотеках тестируемые компоненты не видны, и независимо от того, сколько ваш компонент делаетhide()
илиshow()
jQuery все равно будет указывать, что его не видно, и поведение ваших компонентов будет странным. Это случилось со мной с тестовой библиотекой QUnit от авторов jQuery.Я бы сделал так:
$el.toggleClass("hide")
или$el.addClass("hide")
.И проверьте это с помощью:
!$el.hasClass("hide")
.Кроме того, следует соблюдать осторожность при их использовании ,
is(":visible")
посколькуvisibility: hidden
ониopacity: 0
считаются видимыми, поскольку занимают место в макете.Обратите внимание, что мое решение состоит в том, чтобы проверить, виден ли только элемент. Может случиться так, что один из родителей не виден и, следовательно, не виден. Если вы хотите проверить что-то подобное, возможно, лучше использовать
is(":visible")
или!$(..).closest(".hide")
.Вы можете использовать функцию
is()
вместе с селектором:visible
наjQuery
уже существующем объекте.Например, если у вас есть
div
withid
:"elemento"
вы можете сказать, виден он или нет:Для получения дополнительной информации проверьте документацию is и :visible
Подобно тому, как jquery использует селектор
:visible
в своем примере , вы можете встроить его в само выражение поиска элемента.или фильтровать
Эти формы фильтрации элементов особенно полезны, когда вы собираетесь перебирать список результатов.
Хотя, если вам нужен только логический ответ, как написал Карлос Муньос , вы можете сделать это так:
вы можете использовать следующие
В случае, если мы также хотим проверить непрозрачность, мы делаем:
Я участвовал в этом конкретном случае, когда начального решения было бы достаточно:
НО! Будьте осторожны, как сказал коллега в других комментариях, это не относится к элементам, у которых есть свойство:
opacity:0
.Лично я чаще всего использую with
opacity
, так как таким образом можно эстетически анимировать появление/исчезновение элементов в DOM. Причина, по которой точное утверждение, которое только что сработало для меня, таково:будьте осторожны, не заключайте число (0,1) в одинарные или двойные кавычки!
Всего наилучшего.