Подтвердить что ты не робот

JQuery if для проверки видимости

Я пытаюсь написать script, который будет скрывать/показывать div в зависимости от видимости других элементов. Действие должно выполняться, когда я нажимаю на другой элемент. Вот что я написал до сих пор:

$('#column-left form').hide();
    $('.show-search').click(function() {
        $('#column-left form').stop(true, true).slideToggle(300);
        if( $('#column-left form').css('display') == 'none' ) {
            $("#offers").show();
        } else {
            $('#offers').hide();
        }
    });

Он скрывает div, но он не возвращается, когда я скрываю форму. Будет полезно для любой помощи:)

изменить:

Хорошо, мне удалось добиться желаемого эффекта, написав это:

$('#column-left form').hide();
    $('.show-search').click(function() {
        if ($('#column-left form').is(":hidden")) {
            $('#column-left form').slideToggle(300);
            $('#offers').hide();
        } else {
            $('#column-left form').slideToggle(300);
            $("#offers").show();
        }
    });   

Я не знаю, написано ли это правильно, но это работает;) Спасибо всем за помощь!

4b9b3361

Ответ 2

Да, вы можете использовать .is(':visible') в jquery. Но пока код работает под браузером Safari .is(':visible') не будет работать.

Поэтому, пожалуйста, используйте приведенный ниже код

if( $(".example").offset().top > 0 )

В приведенной выше строке будут работать как IE, так и сафари.

Ответ 3

попробовать

if ($('#column-left form:visible').length > 0) { ...

Ответ 4

 $('#column-left form').hide();
 $('.show-search').click(function() {
    $('#column-left form').stop(true, true).slideToggle(300); //this will slide but not hide that why
    $('#column-left form').hide(); 
    if(!($('#column-left form').is(":visible"))) {
        $("#offers").show();
    } else {
        $('#offers').hide();
    }
  });

Ответ 5

После исправления проблемы с производительностью, связанной с использованием .is( ": visible" ), я бы рекомендовал против вышеуказанных ответов и вместо этого использовать код jQuery для определения того, является ли один элемент видимым:

$.expr.filters.visible($("#singleElementID")[0]);

Что. is делает, проверяет, находится ли набор элементов в пределах другого набора элементов. Таким образом, вы будете искать свой элемент во всем наборе видимых элементов на своей странице. Наличие 100 элементов довольно нормально и может потребоваться несколько миллисекунд для поиска по массиву видимых элементов. Если вы создаете веб-приложение, у вас, вероятно, сотни или, возможно, тысячи. Наше приложение иногда принимало 100 мс для $( "# selector" ). Is ( ": visible" ), поскольку оно проверяло, был ли элемент в массиве из 5000 других элементов.

Ответ 6

если видимо.

$("#Element").is(':visible');

если он скрыт.

$("#Element").is(':hidden');