2014-09-12 195 views
1

你好我有2個功能,第一檢測sroll方向上升/下降,和啓動其他功能(自動滾動)。如何在調用後強制停止.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(無限循環)

回答

-1

您可以在您的自定義結束嘗試return false滾動功能,或在調用自定義滾動功能之前調用preventDefault()

-1

您在滾動回調處理程序定義爲e的參數是event對象。

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

jQuery的每一個事件都有一個叫做preventDefault()方法,即根據Jquery Docs

說明:如果此方法被調用時,事件的默認動作不會被觸發。

因此,調用此方法將繼續滾動你的窗口:

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

我已經tryit的preventDefault()函數及其在我不工作... – feesar 2014-09-12 15:33:36

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(); 
 
    ) 
 
    }; 
 
});