@dima_maketov
Мои тупые вопросы вносят вклад в сообщество.

Как отключить обработчик событий(скролл) в зависимости от условий?

Привет!
Есть такой код:
w = $(window);
    w.scroll(function(){
      if(w.width() <= 415){
        if(w.scrollTop() == 0){
          $('.bot').removeClass('hide');
          $('#header').removeClass('up');
          $('#main__background').removeClass('up');
          //Если обработчик был отключен - включить, по дефолту - включен?
        }else if(w.scrollTop() >= 60){
          $('.bot').addClass('hide');
          $('#header').addClass('up');
          $('#main__background').addClass('up');
          //Отключить этот обработчик, но когда вернемся обратно включить снова?
        }
      }
    });

Он работает и выполняет свою задачу, но хочется отключать обработчик скролла если вертикальный скролл более 60 пикс. Возможно ли это вообще сделать?
  • Вопрос задан
  • 497 просмотров
Пригласить эксперта
Ответы на вопрос 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
Отключить-то можно, только чтобы его снова включить, нужно отслеживать событие, когда scrollTop станет меньше 60.
А вешать событие на скролл, чтобы повесить обработчик скролла - очень плохая практика.
Сейчас сделано правильно, поэтому не нужно городить огород.
А если хотите ускорить это дело, перепишите как-нибудь так:
w = $(window);
var b =  $('.bot');
var h =  $('#header');
var m = $('#main__background');
    w.scroll(function(){
      if(w.width() <= 415){
        if(w.scrollTop() == 0){
          b.removeClass('hide');
          h.removeClass('up');
          m.removeClass('up');
          //Если обработчик был отключен - включить, по дефолту - включен?
        }else if(w.scrollTop() >= 60){
          b.addClass('hide');
          h.addClass('up');
          m.addClass('up');
          //Отключить этот обработчик, но когда вернемся обратно включить снова?
        }
      }
    });
Ответ написан
Ваш ответ на вопрос

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

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