Как проверить, является ли элемент visibility = hidden истинным jQuery

0

Скажем, у меня есть 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, если элемент щелкнут. Если это так, то обходите это? И я не могу использовать свойство отображения.

  • 0
    Можете ли вы предоставить jsFiddle?
  • 0
    когда показанные фрагменты исполняются? (Звучит так, как будто вы ожидаете, что код приведет к автоматическому обновлению div1 при изменении класса div2)
Показать ещё 3 комментария
Теги:

2 ответа

0

вы должны попробовать использовать метод .is() jquery для проверки видимости.

$(element).is(":visible") // Checks for display:[none|block], ignores visible:[true|false]

в твоем случае,

if(!$('#div2').is(":visible")) {
    $('#div1').replaceWith('<span> Duh </span>');
}
-2

это ваш ответ

    if($('#div2').is(':visible')) {....}
  • 0
    Нет, это не так. :visible не работает с элементами, чья видимость переключается с атрибутом CSS visibility .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню