Как я могу отменить привязку для определенного события прокрутки jquery?

#javascript #jquery

Вопрос:

У меня есть событие прокрутки.

 this.todayScrollerRef = $(window).scroll(() => {
   console.log('some stuff');
});
 

При нажатии кнопки я хочу отменить привязку к событию

Поэтому, когда я пытаюсь

 $(window).unbind('scroll');
 

это работает — и я не попадаю some stuff в консоль, когда прокручиваю страницу после нажатия кнопки.

Но поскольку у меня есть еще window.scroll одно событие, которое я не хочу использовать $(window).unbind('scroll');

потому что это unbinds все события прокрутки.

Поэтому я хочу отменить привязку конкретного — и когда я попытаюсь

  $(window).unbind('scroll', this.todayScrollerRef);
 

для моей созданной todayScrollerRef ссылки — это не работает.
Событие прокрутки не уничтожается

Я также пытался с

 $(window).on('scroll', this.todayScroller.bind(this));

todayScroller() {
   console.log('some stuff');
}

// on btn click
 $(window).off('scroll', this.todayScroller.bind(this));
 

и это все равно не работает.

В чем моя ошибка ?

Комментарии:

1. не могли бы вы предоставить свое второе событие прокрутки, которое вам не нужно развязывать?

Ответ №1:

Пусть ваш куратор будет таким:

 this.todayScrollerRef = function() {
  console.log('sd');
};
 

чтобы связать

 $( window).bind( "scroll", this.todayScrollerRef );
 

чтобы развязать:

 $(window).unbind( "scroll", this.todayScrollerRef );
 

Комментарии:

1. Что handler такое «здесь»?

2. .bind теперь он устарел . Вы должны использовать $(window).on("scroll") и $(window).off("scroll") .

3. @JeremyThille я отредактировал свой вопрос. Я тоже пробовал, и это не работает

4. О чем .off('scroll') это ? Вы не пробовали только это.

5. @peckoski bind unbind работает как и ожидалось, проверьте эту скрипку:, когда вы будете прокручивать, вы увидите, сегодня и завтра в консоли. Теперь нажмите на кнопку удалить сегодня, а затем прокрутите, вы увидите только завтра. jsfiddle.net/riteshwaghela/3qcfuvpr/8