При прокрутке вверх / вниз активировать функцию один раз - PullRequest
0 голосов
/ 27 февраля 2020

Мне нужно загрузить 2 разные анимированные графики c при прокрутке окна вверх / вниз на веб-сайте, вызывая некоторые функции, он работает, но он глючит, так как функции запускаются слишком много раз при прокрутке:

$(window).scroll(function() {

      var scroll = $(window).scrollTop(),
      headerHeight = $('.navbar').outerHeight();

       if(scroll > headerHeight) {
          loadLogoAnimeDown();
       }else{
          loadLogoAnimeUp();
       }
}); 

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Вам нужен способ проверить, были ли вызваны функции (и lo go загружен), поэтому вы можете использовать переменную для этого. После загрузки lo go переменная устанавливается в значение false, что предотвращает их загрузку более одного раза.

var downNotLoaded = true;
var upNotLoaded = true;
$(window).scroll(function() {

  var scroll = $(window).scrollTop(),
  headerHeight = $('.navbar').outerHeight();

   if(scroll > headerHeight) {
      if(downNotLoaded){
       loadLogoAnimeDown();
       downNotLoaded = false;
      }

   }else{
      if(upNotLoaded){
       loadLogoAnimeUp();
       upNotLoaded = false;
      }
   }

});

0 голосов
/ 27 февраля 2020

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

var animated;

$(window).scroll(function() {

  var scroll = $(window).scrollTop(),
  headerHeight = $('.navbar').outerHeight();

   if(scroll > headerHeight) {
      if (animated == true) {
         loadLogoAnimeDown();
         animated = false;
      }
   } else{
      if (animated == false) {
         loadLogoAnimeUp();
         animated = true;
      }
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...