2013-07-08 2 views
1

Я использую jQuery, чтобы добавить некоторые элементы для перехода на страницу (через плагин jQuery Transit), когда он зависает. Поскольку я пытаюсь спроектировать отзывчиво, я хочу, чтобы эти переходы выполнялись только тогда, когда браузер имеет определенный размер или больше.Почему мой jQuery не реагирует на изменение размера окна?

Я написал следующий код в попытке сделать это:

$(document).ready(function(){ 
    var $window = $(window); 
    var $logo = $('.logo'); 

    function checkWidth() { 
     windowsize = $window.width(); 
    } 

    checkWidth(); 

    $(window).resize(checkWidth); 

    if (windowsize >= 768) { 
     $logo.hoverIntent(
      function(){ 
       $logo.transition({ 
        perspective: '600px', 
        rotateY: '-10deg' 
       }); 
      }, 
      function(){ 
       $logo.transition({ 
        perspective: '600px', 
        rotateY: '0deg' 
       }); 
      } 
     ); 
    } 

}); 

Если я загрузить страницу в большом браузере, она работает, как и ожидалось - эффект парения активен. Если я изменяю размер браузера, уменьшая его (минуя точку останова) и обновляя, то он работает - эффект зависания отключен. Но если я изменяю размер окна без обновления между ними, эффект не реагирует - он либо остается отключенным (при изменении размера от малого до большого экрана), либо активным (при изменении размера от большого к маленькому).

Это, конечно, незначительная причуда, но я не могу точно понять, почему это происходит. Насколько я могу судить, когда изменяется размер окна, должен обновлять переменную windowsize, которую должен быть отмечен в заявлении if. Что я забываю, что делает это не так?

Спасибо, кучка.

ответ

2

В настоящее время checkWidth присваивает значение windowsize. Вам нужно переместить код, который фактически читает windowsize в checkWidth.

$(document).ready(function(){ 
    var $window = $(window); 
    var $logo = $('.logo'); 

    function checkWidth() { 
     windowsize = $window.width(); 

     if (windowsize >= 768) { 
      $logo.hoverIntent(
       function(){ 
        $logo.transition({ 
         perspective: '600px', 
         rotateY: '-10deg' 
        }); 
       }, 
       function(){ 
        $logo.transition({ 
         perspective: '600px', 
         rotateY: '0deg' 
        }); 
       } 
      ); 
     } 
    } 

    // can trigger the resize handler instead of 
    // explicitly calling checkWidth() 
    $(window).resize(checkWidth).resize(); 
}); 
+0

Спасибо за быстрый ответ! Я пробовал использовать предоставленный вами код. Теперь, если я загружаю страницу в маленький браузер, эффект зависания не будет, и если я сделаю браузер больше без обновления, появится эффект зависания. Это хорошо! Однако переход от большого к малым не отключает эффект наведения. Мне что-то не хватает? – SpencerDub

+0

Это было бы потому, что (** сюрприз! **) код не делает ничего, чтобы отключить эффект зависания, когда размер окна <768. Вам нужно будет добавить код для этого. –

+0

Ах, есть. Цифры я бы пропустил что-то простое. Благодаря! – SpencerDub

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