如何停止滚动事件

时间:2014-09-12 15:22:21

标签: javascript jquery scroll

您好我有2个功能,首先检测向上/向下的滚动方向,然后启动其他功能(自动滚动)。如何在调用后强制停止.scroll()函数?现在它看起来像无限循环...

var pageScroll = function(){

    var iScrollPos = 0;

    $(window).scroll(function(e){

        var iCurScrollPos = $(this).scrollTop();

            if (iCurScrollPos > iScrollPos) {

                App.scrollto((currentPage+1));

            } else {

                App.scrollto((currentPage-1));

            }

        iScrollPos = iCurScrollPos;

    });

}

并调用函数

    scrollto: function(page){

        var section_offset = $('section[data-page="'+page+'"]').offset().top;

        $('html, body').animate({ scrollTop: section_offset }, 'slow',function(){

            $('html, body').stop();
            currentPage = page;
            console.log(currentPage);

        });

    }

和控制台日志屏幕http://prntscr.com/4m493q(无限循环)

5 个答案:

答案 0 :(得分:1)

这段代码在很多浏览器上都适合我。



$(function() {
  var scrollTop = $(window).scrollTop();
  $(window).scroll(function() {
      // this bit stops the page from being scrolled
      if ( * * * insert check * * * )
        $(window).scrollTop(scrollTop);

      // update the new y value
      scrollTop = $(window).scrollTop();
    )
  };
});




答案 1 :(得分:1)

使用$(window).unbind('scroll');http://api.jquery.com/unbind/

答案 2 :(得分:0)

尝试一下:

HTMLElement.prototype.stopScroll = function(){
    this.scroll({top:this.scrollTop+1});
}

完成后,假设您正在滚动:

document.getElementByTagName('body')[0].stopScroll();

或使用JQuery:

$('body')[0].stopScroll();

答案 3 :(得分:-1)

您可以在自定义滚动功能结束时尝试return false,或在调用自定义滚动功能之前调用preventDefault()

答案 4 :(得分:-1)

您在滚动回调处理程序中定义为e的参数是event对象。

$(window).scroll(function(e){

Jquery上的每个事件都有一个名为preventDefault()的方法,根据Jquery Docs

  

说明:如果调用此方法,则不会触发事件的默认操作。

因此,调用此方法将保持滚动窗口:

$(window).scroll(function(e){
    e.preventDefault();