2014-09-13 2 views
0

У меня есть код jQuery, чтобы сделать аккордеон для содержимого страницы, когда ширина окна составляет 500 пикселей или меньше. Он отлично работает, но проблем мало. Когда я изменяю размер окна, например, с 900px до 450px и нажимаю ссылку h3 для открытия контента, он ведет себя странно. Он открывает и закрывает контент 4 раза и после него остается открытым, при закрытии открытого аккордеона.Запуск и остановка аккордеона на отзывчивом

Я думаю, что мне не хватает чего-то очевидного здесь, но просто не мог понять, что это такое.

jQuery(window).on("load resize",function(e){ 

jQuery(function() { 
    if(jQuery(window).width() <= 500) { 


     //ACCORDION BUTTON ACTION 
     jQuery('h3').click(function() { 
      if(jQuery(this).data("slided") === true) { 
       jQuery(this).next().slideUp('normal'); 
       jQuery(this).data("slided", false); 
      } else { 
       jQuery('h3').data('slided',false); 
       jQuery('.sec').slideUp('normal'); 
       jQuery(this).next().slideDown('normal'); 
       jQuery(this).data("slided", true); 
      } 
     }); 

     //HIDE THE DIVS ON PAGE LOAD  
     jQuery(".sec").hide(); 
    } else { jQuery(".sec").show(); } 
}); 
}); 

В моем JFIDDLE примере кажется, петля открыть скрыть гармошке еще больше.

ответ

1

Вот правильный код (вы можете найти FIDDLE here):

//ACCORDION BUTTON ACTION  
$('h3').click(
    function() {     
     if (jQuery(window).width() <= 500) {        
      if(jQuery(this).data("slided") === true) { 
       jQuery(this).next().slideUp('normal'); 
       jQuery(this).data("slided", false); 
       //alert('slided');       
      }         
      else { 
       jQuery('h3').data('slided',false); 
       jQuery('.sec').slideUp('normal'); 
       jQuery(this).next().slideDown('normal'); 
       jQuery(this).data("slided", true); 
      } 
     } 
    }); 
+0

Странно. На моем сайте этот код не работает вообще. Он не запускает аккордеон. – ace

+1

И этот скрипт должен быть запущен, если размер окна изменен - ​​не нужно обновлять страницу, чтобы получить эту работу. – ace

+0

Я заметил, что когда я использую 'jQuery (window) .load (function()' вместо 'jQuery (window) .on (« load resize », function (e)' он не открывается и не закрывается как «looping». Но когда используется только функция загрузки, тогда необходимо перезагрузить страницу, чтобы получить работу аккордеона. – ace

Смежные вопросы