Скажем, у меня есть 2 элемента, div1 и div2. И когда я нажимаю на div1, div2 должен .toggleClass()
между visibility=hidden
и visibility=visible
. Это прекрасно работает. Но когда я пытаюсь это сделать:
if($('#div2').css('visibility') == 'hidden') {
$('#div1').replaceWith('<span> Duh </span>');
}
Ничего не происходит. Если я сменил 'hidden'
на 'visible'
он работает нормально. Но это не то, что я хочу. Я знаю, что при использовании видимости = hidden элемент все еще считается видимым, но shoulnd't .css('visibility') == 'hidden'
проверяет, установлен ли стиль элемента для видимости = скрытый? Что в моем случае должно быть правдой.
Я также пробовал
if($('#div2').hasClass('visHidden')) {
$('#div1').replaceWith('<span> Duh </span>');
}
Но ничего не происходит.
Может ли проблема заключаться в том, что при загрузке DOM ни один из классов visHidden и visVisible не установлен? Потому что я только устанавливаю их с помощью jQuery, если элемент щелкнут. Если это так, то обходите это? И я не могу использовать свойство отображения.
вы должны попробовать использовать метод .is()
jquery
для проверки видимости.
$(element).is(":visible") // Checks for display:[none|block], ignores visible:[true|false]
в твоем случае,
if(!$('#div2').is(":visible")) {
$('#div1').replaceWith('<span> Duh </span>');
}
это ваш ответ
if($('#div2').is(':visible')) {....}
:visible
не работает с элементами, чья видимость переключается с атрибутом CSS visibility
.