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();
}
});
Я не знаю, написано ли это правильно, но это работает;) Спасибо всем за помощь!
Ответы
Ответ 1
Вы можете использовать .is(':visible')
для проверки того, что что-то видимо, и .is(':hidden')
для проверки на противоположное:
$('#offers').toggle(!$('#column-left form').is(':visible')); // or:
$('#offers').toggle($('#column-left form').is(':hidden'));
Ссылка:
Ответ 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');