Как определить, прокручивается ли элемент, но только один раз? - PullRequest
3 голосов
/ 17 февраля 2011

Я пытаюсь определить, был ли элемент выделен и выполнил следующий код

$(window).bind('scroll', function(){
    var $btn = $('#intro div.summary a[href=#top]');
    if($(window).scrollTop() > ($btn.offset().top+$btn.height())){
        console.log('out');
    }
});

У меня есть якорь в каком-либо тексте, который я надеюсь клонировать и сделать фиксированную навигациюкогда-то прокручивается div.intro.

Моя проблема в том, что код срабатывает, как только элемент исчезает из виду, но продолжает работать.Так что я не могу больше ничего делать, потому что что-то еще будет продолжать стрелять.

Есть ли способ уволить, когда он выйдет, и "войти", как только он войдет?Помимо установки переменной.

Ответы [ 2 ]

7 голосов
/ 17 февраля 2011

Чтобы выполнить событие только один раз, вы можете сделать

$(window).one('scroll', function(){
    var $btn = $('#intro div.summary a[href=#top]');
    if($(window).scrollTop() > ($btn.offset().top+$btn.height())) {
        console.log('out');
    }
});
1 голос
/ 17 февраля 2011

Ну, самое простое решение - unbind событие после его запуска:

$(window).bind('scroll', function(){
    var $btn = $('#intro div.summary a[href=#top]');
    if($(window).scrollTop() > ($btn.offset().top+$btn.height())) {
        console.log('out');
        $(window).unbind('scroll');
    }
});
...