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

0

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

Я пробовал работать с двумя разными частями js, которые я нашел в уроках, и я уверен, что был бы более простой способ сделать это.

HTML

       <ul class="accordion">
            <li>
                <a href="#">America</a>
                <ul>    
                    <li><a href="#">New York</a></li>
                    <li><a href="#">San Fransisco</a></li>
                    <li><a href="#">Washington</a></li>
                </ul>
            </li>
            <li>
                <a href="#">Antarctica</a>
            </li>
            <li>
                <a href="#">Afro-Eurasia</a>
                <ul>
                    <li><a href="#">Amsterdam</a></li>
                    <li><a href="#">Paris</a></li>
                    <li><a class="#">Stockholm</a></li>
                </ul>
            </li>
            <li>
                <a href="#">Australia</a>
                <ul>
                    <li><a href="#">Melbourne</a></li>
                    <li><a href="#">Perth</a></li>
                    <li><a href="#">Sydney</a></li>
                </ul>
            </li>
            <li>
                <a href="#">Google</a>
            </li>
        </ul>

JS для оценки ширины браузера

(function($){
  $(document).ready(function(){
    var current_width = $(window).width();
    if(current_width < 480){
      jQuery('body').addClass("mobile");
    }
  });

  $(window).resize(function(){
    var current_width = $(window).width();
    if(current_width < 480){
      jQuery('body').addClass("mobile");
    }
  });

})(jQuery);

JS для выпадающего

$(document).ready(function() {
    $('.mobile .accordion ul').hide();
    $('.mobile .accordion li a').click(
        function() {
            var openMe = $(this).next();
            var mySiblings = $(this).parent().siblings().find('ul');
            if (openMe.is(':visible')) {
                openMe.slideUp('normal');  
            } else {
                mySiblings.slideUp('normal');  
                openMe.slideDown('normal');
            }
          }
    );
});

1 ответ

0
Лучший ответ

Редактировать:

$(document).ready(function(){
   setResize();
   resizeCheck();
});
function createMobile() {
   $('.mobile .accordion ul').hide();
   $('.mobile .accordion li a').unbind("click");
   $('.mobile .accordion li a').click(
       function() {         
           var openMe = $(this).next();
           var mySiblings = $(this).parent().siblings().find('ul');
           if (openMe.is(':visible')) {
               openMe.slideUp('normal');  
           } else {
               mySiblings.slideUp('normal');  
               openMe.slideDown('normal');
           }          
         }
   );
};
function resizeCheck() {
   var current_width = $(window).width();      
   if(current_width < 480){
     if(!$('body').hasClass('mobile'))
     {
         $('body').addClass("mobile");
     }
     createMobile();
   }
   else {
       if($('body').hasClass('mobile'))
       {
           $('body').removeClass('mobile');
       }
   }
};
function setResize() {  
   $(window).resize(function() {
       resizeCheck();
   });
};
function removeResize() {
   $(window).unbind('resize');
};

см. рабочий пример на jsFiddle

  • 0
    спасибо за ответ, к сожалению, это не работает. Он превращается в выпадающий навигационный элемент, когда достигает заданной высоты, но вы не можете открыть раскрывающийся список, так как, когда вы нажимаете на li, он прокручивает ul внутри него, а затем мгновенно прокручивает обратно. Кроме того, при прокрутке с 480px он остается выпадающим и не возвращается в список видимых ссылок.
  • 0
    где вы создаете Dropbox? я не могу найти его в коде JS
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню