jQuery bind/unbind 'scroll' событие на $(окно)

у меня есть эта функция:

function block_scroll(key){
    if (key) {
        $(window).bind("scroll", function(){
            $('html, body').animate({scrollTop:0}, 'fast');
        });
    } else {
        $(window).unbind();
    }
}

первая часть работает так, как должна, но когда я позже вызываю block_scroll(false) - она все еще блокируется. Ват делать?

ИЗМЕНИТЬ Так как предлагал я попробовал...

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

...с некоторой растерянностью. Сначала это не сработало - потом сработало.

теперь я думаю, что это не удалось, потому что я прокручивал момент вызова block_scroll(false). Я проверял это несколько раз. И да, если я ничего не делаю пока скрипт работает и вызывается block_scroll (false) - он работает. Но это не так, если я прокручиваю, когда он вызван.

6 ответов


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

хотя документация говорит, что он удалит все обработчики событий, если вызывается без аргументов, стоит попробовать явно развязать его.

обновление

это сработало, если вы использовали одинарные кавычки? Это звучит неправильно - насколько я знаю, JavaScript обрабатывает одинарные и двойные кавычки одинаково (в отличие от некоторых других языков, таких как PHP и C).


отметим, что ответы, которые предлагают использовать unbind() теперь устарели как этот метод был осужден и будет удален в будущих версиях jQuery.

по состоянию на jQuery 3.0,.unbind () устарел. Он был вытеснен .метод off () начиная с jQuery 1.7, поэтому его использование уже не рекомендуется.

вместо этого, теперь вы должны использовать off():

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

попробуйте это вместо

$.unbind('scroll');

http://api.jquery.com/unbind/


вам нужно:

unbind('scroll')

на данный момент Вы не указываете событие для отмены привязки.


очень старый вопрос, но в случае, если кто-то еще наткнется на него, я бы рекомендовал попробовать:

$j("html, body").stop(true, true).animate({
        scrollTop: $j('#main').offset().top 
}, 300);

попробуйте это:

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

это работает в моем проекте