Проверьте, что div скрыт с помощью jQuery

это мой див

<div id="car2" style="display:none;"></div>

Затем у меня есть кнопка «Показать», которая будет отображать div при нажатии:

$("show").click(function() {
    $("$car2").show();
}); 

Итак, прямо сейчас я хочу проверить, скрыт ли div #car2 перед отправкой формы:

if($('#car2').is(':hidden')) {
    alert('car 2 is hidden');
}

Теперь вот проблема. Хотя div #car2 уже отображается, я все еще получаю предупреждающее сообщение, которое означает, что jQuery предполагает, что div #car2 все еще скрыт.

Моя версия jQuery 1.7.

Спасибо.

ИЗМЕНИТЬ:

Как сказал Джаспер, мой код правильный и может быть запущен с помощью этой демо.

Я подозреваю, что есть некоторый конфликт с формой jQuery для мастера. плагин, который я использую в своей форме. У кого-нибудь есть идея решить эту проблему?


person cyberfly    schedule 13.12.2011    source источник
comment
jsfiddle.net/YjP4K/2 Ваш код работает в упрощенном виде, поэтому, возможно, у вас есть ошибка где-то еще ?   -  person Jasper    schedule 13.12.2011
comment
См. также Проверка скрытого элемента [с помощью jquery]   -  person Adam Katz    schedule 03.10.2015


Ответы (6)


Вы можете проверить свойство CSS display:

if ($('#car').css('display') == 'none') {
    alert('Car 2 is hidden');
}

Вот демонстрация: http://jsfiddle.net/YjP4K/

person Jasper    schedule 13.12.2011
comment
хотя другой ответ правильный, но почему-то я могу использовать этот метод только в своей форме, поэтому я выберу его в качестве ответа. Благодарю. - person cyberfly; 13.12.2011
comment
$('#car').is(:hidden) должно работать. Это также более чистое решение, чем текущее. Узнайте больше на api.jquery.com/hidden-selector. - person akshay; 10.04.2015
comment
@akshay да, это имеет больше семантического смысла. Я думаю, что есть крайние случаи, когда собственная проверка имеет смысл, потому что вокруг элемента (элементов) есть условия, которые мешают селекторам :hidden и :visible. - person Jasper; 12.04.2015
comment
@akshay ты забыл кавычки на :hidden. Это должно быть $('#car').is(':hidden') - person Ankush Raghuvanshi; 22.07.2016

Пытаться:

if(!$('#car2').is(':visible'))
{  
    alert('car 2 is hidden');       
}
person Omtara    schedule 13.12.2011

Пытаться

if($('#car2').is(':hidden'))
{  
    alert('car 2 is hidden');       
}
person Sadikhasan    schedule 20.02.2015

Вместо этого попробуйте проверить свойство :visible.

if($('#car2').not(':visible'))
{
    alert('car 2 is hidden');       
}
person Phil.Wheeler    schedule 13.12.2011

Вы заметили опечатку, $car2 вместо #car2?

В любом случае, :hidden работает как положено, попробуйте здесь.

person smendola    schedule 13.12.2011

Вы можете использовать,

if (!$("#car-2").is(':visible'))
{
      alert('car 2 is hidden');
}
person SharK    schedule 05.07.2016