2015-01-17 2 views
1

Если кто-то может мне помочь, пожалуйста?jQuery - выполнить скрипты на основе размера экрана при изменении размера окна без обновления?

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

if($(window).width() < 480){ 
     $('.menu_items').fadeOut(0); 
     $('.menu-bar').click(function(){ 
      $('menu_items').fadeToggle(500 , "swing"); 
      }); 
     $('.menu_item').click(function() { 
      $('menu-bar'); 
      }); 

    } else { 

    $('.menu_items').fadeOut(0); 
     $('.menu-bar').hover(function(){ 
      $(this).children().fadeIn(100, "swing"); 
      },function(){ 
       $(this).children().fadeOut(400, "swing"); 
       }).triger('mouseleave'); 
      }; 

это отлично работает! В размере экрана 480x320 и ниже активна первая функция, разрешение больше, чем 480 пикселей, второе.

В этом случае: , когда я изменяю размер окна за точкой торможения (480 пикселей), все еще активна первая функция, когда я загружаю html.

Я должен перезагрузить страницу, чтобы активировать нужную функцию.

+1

проверить размер внутри обработчиков кликов и соответствующим образом реагировать – charlietfl

+0

charlietfl, та же проблема браузер не обновит сценарий, $ (окно) .resize (функция() {... этот ничего не будет делать, прежде чем изменять размер одного пикселя в окне, также я должен вручную обновить браузер. –

ответ

0

Применение window.resize:

window.onresize = function(event) { 
    if($(window).width() < 480){ 
    $('.menu_items').fadeOut(0); 
    $('.menu-bar').click(function(){ 
     $('menu_items').fadeToggle(500 , "swing"); 
     }); 
    $('.menu_item').click(function() { 
     $('menu-bar'); 
     }); 

} else { 

$('.menu_items').fadeOut(0); 
    $('.menu-bar').hover(function(){ 
     $(this).children().fadeIn(100, "swing"); 
     },function(){ 
      $(this).children().fadeOut(400, "swing"); 
      }).triger('mouseleave'); 
     }; 
}; 

JavaScript window resize event

+0

будет содержать * много много обработчиков кликов на элементах. – charlietfl

0

JQuery имеет функцию .resize, которая вызывается всякий раз, когда элемент rezised. Вы должны быть в состоянии использовать его следующим образом:

$(window).resize(function() { 
    if(this.width() < 480){ 
     $('.menu_items').fadeOut(0); 
    $('.menu-bar').click(function(){ 
     $('menu_items').fadeToggle(500 , "swing"); 
     }); 
    $('.menu_item').click(function() { 
     $('menu-bar'); 
     }); 

    } else { 

    $('.menu_items').fadeOut(0); 
     $('.menu-bar').hover(function(){ 
     $(this).children().fadeIn(100, "swing"); 
     },function(){ 
      $(this).children().fadeOut(400, "swing"); 
      }).triger('mouseleave'); 
     };" 
    }); 
Смежные вопросы