2013-10-24 42 views
0

我需要得到一個事件,當滾動達到div的底部,並根據下面的代碼我得到的滾動事件達到底部,但事情是,我得到多個事件,並且它是同時發射因爲滾動在底部。我們應該如何停止連續事件觸發?

那麼有什麼方法可以連續停止點火事件,而不是在處理第一個事件發生後觸發事件嗎?

$("#divid").bind('scroll', function() { 

    //Getting continuous event as far as scroll is in bottom 

     if($('#divid')[0].scrollHeight - $('#divid').scrollTop() <= $('#divid').outerHeight()) 
     { 
      //Code here--- 
     } 
}); 
+0

設置超時或綁定您的事件一次。請參閱http://stackoverflow.com/questions/19561574/scrolling-to-bottom-of-page-run-function-function-runs-too-many-times/19562496#19562496 - 幾乎相同的問題 – Tschitsch

+0

html和css代碼? – UDB

回答

0

要在一系列連續事件的開始或結束時觸發一次事件處理程序,可以消除它們。

http://benalman.com/projects/jquery-throttle-debounce-plugin/

function start() { 
    // code to run at start of event 
} 

function end() { 
    // code to run at end of event 
} 

$(window).scroll($.debounce(250, true, start)); 
$(window).scroll($.debounce(250, false, start)); 

第一個參數是毫秒之前它被認爲是一個單獨的事件應通過量。第二個參數確定事件處理程序是應該在事件系列的開始還是結束時運行。

在您的情況下,您可以使用'結束'版來檢查用戶停止滾動時的滾動位置。

+0

我需要包含debounce插件才能使用它嗎? –

+0

是的,你需要在你的頁面中加入debounce插件。 –

+0

[這裏](http://stackoverflow.com/a/4298672/1169519)是一個較小的「插件」的任務。 – Teemu

相關問題