2015-08-15 2 views
-1

Итак, у меня есть задача, работающая в фоновом режиме, которая представляет новый div с анимацией CSS3 каждый раз, когда пользователь прокручивает вниз. Я использую этот код:jQuery - Остановка фоновой функции

var position = $(window).scrollTop(); 

$(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 
    if(scroll > position) { 
     // scrolling downwards 
     hypeDocument.showNextScene(hypeDocument.kSceneTransitionPushBottomToTop, 1.1)  
     } else { 
     hypeDocument.showPreviousScene(hypeDocument.kSceneTransitionPushTopToBottom, 1.1) 
     } 
    position = scroll; 
}); 

Но я хотел бы остановить выполнение этой задачи с помощью новой функции. Есть ли способ создать функцию «убить» все задачи jQuery?

Любая помощь приветствуется.

Благодаря

+2

Это не «задача», это обработчик событий. Просто установите глобальный флаг и запустите код в обработчике, только когда флаг станет ясным. – Pointy

+0

Или даже лучше, сделайте свой код повторно используемым, объявите/назначьте функцию обработчика и отделите событие прокрутки от 'окна', когда это необходимо. – Teemu

+0

@pointy не могли бы вы указать мне в правильном направлении? Я очень новичок в jQuery – dwinnbrown

ответ

0

В последних версиях JQuery мы можем использовать off() функцию для удаления события связывания. Пример показан ниже.

Обработчики событий, прикрепленные .bind(), могут быть удалены .unbind(). (По состоянию на JQuery 1.7, то .on() и .off() методы являются предпочтительными для присоединения и удаления обработчиков событий на элементы.)

$(window).scroll(function(){ 
 
    console.log('Scrolled'); 
 
    $('#scrollPos').text($(this).scrollTop()) 
 
}) 
 

 
$('#stopFunc').click(removeScrollBinding); 
 

 
function removeScrollBinding() { 
 
    $(window).off('scroll'); 
 
}
#scrollPos{ 
 
    position:fixed; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<button id="stopFunc">Stop Scroll Function</button><div id="scrollPos"></div> 
 
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>

вызовите функцию removeScrollBinding(), чтобы остановить связывание.

Смежные вопросы