2012-08-08 73 views
1

我加載我的內容每$ .get和「跟隨」每個JavaScript自動滾動新的附加數據。現在我想禁用自動滾動,如果用戶「手動滾動」,但下面的滾動到底部函數也會觸發Jquery .scroll()函數 - 因此它會禁用它。JQuery自動滾動到底部(但禁用Mousescrolling)

if(self.testelem.hasClass("active")){ 
    $(document).scrollTop($(document).height()); 
} 

如何接收鼠標滾輪事件或防止scrollTop觸發.scroll()函數?我也嘗試在scrollTop工作時設置Timeout來阻止,但這不是一個好的解決方案,並且有一些缺點。

有什麼建議嗎?

編輯: 我當前的代碼:

我使用按鈕#stb(滾動到底部)和向。主動將其關閉/上的類。

$.get("url", function(data){ 
    //do something   
    if(self.testelem.hasClass("active")){ 
     $(document).scrollTop($(document).height()); 
    } 
}); 

$(document).scroll(function(){ 
    jQuery('html,body').queue([]).stop(); //try this 
    //$("#stb").parent().removeClass("active"); 
}); 

ps:是的,我知道。有幾個非常類似的問題。我讀過它們,但重要的點有所不同。

+1

爲了澄清,你想它,這樣它會自動滾動,然後當用戶中斷中期滾動它會停止那個行動?確切地說, – Chris 2012-08-08 09:25:18

+0

!禁用鼠標中間滾動自動滾動。 – NaN 2012-08-08 09:27:48

+0

好的,嘗試我的更新,我給了兩個可能的解決方案,雖然我相信這是一個棘手的問題 – Chris 2012-08-08 09:31:28

回答

1

要停止用戶中斷中期滾動scrollTo事件試試這個:

$(document).scroll(function(){ 
    jQuery('html,body').queue([]).stop(); //try this 
    //jQuery.scrollTo.window().queue([]).stop(); //failing that try this 
}); 
+0

但AFAIK'$(document).scrollTop($(document).height());'也會觸發.scroll功能,因此禁用自己。 – NaN 2012-08-08 09:24:43

+1

它只會取消初始調用,所以當它開始滾動時,它將繼續滾動(僅針對該更新)。如果您想爲每次更新重置它,請使'$ .get({})'調用重置'hasScrolled'。 – Chris 2012-08-08 09:26:23

+0

好的,我把這行寫入我的