#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