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

Как проверить, открыт ли DIV или закрыт после slideToggle

У меня есть кнопка JQuery Ui (#toggleIcons), которая при нажатии, переключает div (.icons), чтобы показать некоторые значки. Я также использую JQuery Isotope и Infinitescroll для динамического добавления новых изображений. То, что я пытаюсь сделать, - это сохранить способ сохранения состояния слайда, поскольку новые изображения добавляются и обновляются. Ifinitescroll имеет функцию обратного вызова, чтобы я мог обновлять страницу и состояние значков.

//My button click function
$("#styleSwitcher #toggleIcons" ).click(function() {
   $('.icons').slideToggle('slow');
   //for Isotope to update the layout
   $('#container').isotope('reLayout') 
    return false;
});

//code I am working on to put in callback to test if div is open or closed
if($(".icons").is(":hidden"))
{
  $('.icons').hide();
}
else
{
  $('.icons').show();
}

Не работает. Любая помощь или руководство будут оценены. спасибо

4b9b3361

Ответ 1

У вас есть свое состояние назад:

if($(".icons").is(":visible"))  <-----
  {
$('.icons').hide(); 
  }     
else
  {
$('.icons').show(); 
  }

Ответ 2

Поставьте состояние проверки script в функцию - пусть оно немного держится.

$('.advance-view').click(function() {
    $('#advance-control').slideToggle('slow', function() {
        if ($('#advance-control').is(':hidden'))
        {
            $('.advance-view').css("background-color", "#2B509A");
        }
        else
        {
            $('.advance-view').css("background-color", "#4D6837");
        }
    });             
});

Ответ 3

почему не просто toggle или slideToggle это?

$(".icons").toggle();

Ответ 4

Я бы использовал :visible

if($(".icons:visible").length > 0)
    //item is visible
else
    //item is not visible

но если вы хотите придерживаться своего кода

if($(".icons").is(":hidden"))

должен, вероятно, читать

if($(".icons").is(":hidden").length > 0)

Ответ 5

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

if ($(this).is(':hidden')) {
    var state = "closed";
} else {
    var state = "open";
}

alert($(this).attr('id') + ' is ' + state);
return false;           

Ответ 6

Думаю, я понимаю, чего ты хочешь. с некоторой кнопки, которая не имеет ничего общего с добавлением изображений, пользователи могут скрывать и показывать значки. Добавляются новые изображения с показом значков, и вы не имеете представления о обратном вызове, должны ли вы показывать значки или скрывать их, чтобы они соответствовали остальной части галереи.

//My button click function
$("#styleSwitcher #toggleIcons" ).click(function() {
$('.icons').slideToggle('slow');
//for Isotope to update the layout
$('#container').isotope('reLayout').data({iconStateIsHidden:$('.icons').is(":hidden")}); 
 return false;
 });



 //code I am working on to put in callback to test if div is open or closed



       if($("#container").data()[iconStateIsHidden])
          {
// newly added images should match the rest of the gallery
        $('.icons').hide(); 
          }     
        else
          {
// newly added images should match the rest of the gallery
        $('.icons').show(); 
          }