2015-07-05 5 views
0

Я использую эту функцию:Stop JavaScript/функция JQuery

function myFunction(){ 
var position = $(window).scrollTop(); 

$(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 
    if(scroll > position) { 
     // scrolling downwards 
     hypeDocument.showSceneNamed('Section 2', hypeDocument.kSceneTransitionCrossfade, 1.1); 
    } 
    position = scroll; 
}); 

return false; 
} 

В моем сайте, я хочу, чтобы пользователь, чтобы получить в подарок новую страницу называется «сцена» (в программе я использую) каждый время прокрутки вниз. Этот код отлично работает один раз, но когда я его второй раз настраиваю для перехода на другую сцену, он снова вызывает первую функцию. Есть ли способ, которым я могу kill эта функция при обнаружении события прокрутки?

Благодаря

+1

возможно дубликат [Лучший способ удалить обработчик событий в JQuery?] (Http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler- in-jquery) – JJJ

ответ

0

Просто удалите событие прокрутки с использованием либо отвязать или от метода JQuery

$(window).off("scroll"); 

или

$(window).unbind("scroll"); 
+0

ok. если я вернусь к этой «сцене», функция все равно будет работать? – dwinnbrown

+0

Событие уже привязано, а функция eventhandler уже находится в памяти, даже если вы удалите эту функцию, тогда и этот код будет исполняемым. вам нужно отделить событие от dom. –

+0

Хорошо, а вы знаете, как я буду это делать? Если бы я применил unbind к первому прокрутку, могу ли я удалить его, когда сцена была обновлена, чтобы она работала на той же сцене, если они вернутся к ней? – dwinnbrown

0

Вы можете использовать one() выполнить событие только один раз. jQuery API. Он имеет тот же эффект, что и ответ Лакшмиканта, но просто сводит код к одной строке.

function myFunction() { 
    var position = $(window).scrollTop(); 

    $(window).one('scroll', function() { // Change 
    var scroll = $(window).scrollTop(); 
    if (scroll > position) { 
     // scrolling downwards 
     hypeDocument.showSceneNamed('Section 2', hypeDocument.kSceneTransitionCrossfade, 1.1); 
    } 
    position = scroll; 
    }); 

    return false; 
} 
+0

ok. это позволит мне запустить его снова на месте или это буквально убьет эту функцию на время посещения сайта? – dwinnbrown

+0

Он будет работать каждый раз, когда страница загружается, то есть JS обновляется. Функциональность сбрасывается. Попробуйте код один раз :) –

+0

@dwinnbrown, Этот код будет работать только для одного прокрутки. –