@makcimusprime

Как выполнить функцию при скролле 1 раз?

Задача в том, чтобы одиночной прокрутке колесом мыши функция myFunction() выполнялась только 1 раз за 1 скролл. Сейчас она выполняется много раз за 1 скролл.
При загрузке страницы не с верху, а чтобы нужный блок попадал в экран - все норм. Работает как надо. Но если идет скролл до нужного блока - то функция выполняется много раз.
$(window).scroll(function(){
 $(".my-class").on('mousewheel', function(e) {
  if($(".my-class").hasClass("goscroll")){
   $('.my-class').bind("mousewheel", function() {
    return false;
   });
   myFunction();
  }else{
   $(".my-class").unbind();
  };
 });
});
  • Вопрос задан
  • 2215 просмотров
Пригласить эксперта
Ответы на вопрос 4
Stalker_RED
@Stalker_RED
$(".my-class").one('mousewheel', function(){
      // ...
})
Ответ написан
aloky
@aloky
js
var scrolling = true;

$(window).scroll(function(){
  if (scrolling) {
   console.log(123123123)
   scrolling = false
  }
})

$.fn.scrollEnd = function(callback, timeout) {          
  $(this).scroll(function(){
    var $this = $(this);
    if ($this.data('scrollTimeout')) {
      clearTimeout($this.data('scrollTimeout'));
    }
    $this.data('scrollTimeout', setTimeout(callback,timeout));
  });
};

$(window).scrollEnd(function(){
    scrolling = true
}, 300);
Ответ написан
Комментировать
ruvasik
@ruvasik
https://www.bryce.ru
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Ловите нативное событие, оно вроде один раз на тик генерится. Но это не точно.

https://codepen.io/anon/pen/KByzJZ?editors=1011
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы