2013-10-02 72 views
0

我想能夠觸發一個事件,如果scrollTop位置超過800px。我們都知道,這可以通過包裝在一個窗口中滾動功能的if語句,像這樣來完成...減少窗口滾動功能,以簡單的if語句

  $(window).scroll(function() { 
      if ($(this).scrollTop() > 800) { 
      // do something 
      } 
     }); 

我能做到這一點,而不將其直接連接到窗口滾動功能?

我已經試過,但它不工作:

  if ($(window).scrollTop() > 800) { 
      // just do it 
      } 

好了,要溫柔。

+1

不,你不能在那裏需要知道窗口正在滾動。這就是$(window).scroll處理程序 –

+0

'$(window).scroll()'是一個事件處理程序 - 這是發生事件時發生的事情。在這種情況下,您說「窗口滾動時運行此代碼」。如果沒有這些,你的if語句只會執行一次,並且永遠不會在頁面的生命中執行。 – Archer

+0

嗯,我已經讀過,它是一個內存/ CPU的豬,其次,我想要某個東西只能執行一次。 – user2777052

回答

1

你真的不能,除非你從別的地方調用它,點擊處理程序或其他東西。

你不想綁定到滾動事件的任何原因?

編輯::

爲求完整,這裏是另一個-CPU密集型更低的方式,只是使用時間戳。

var dt = new Date(); 
$(window).scroll(function(){ 
    var now = new Date(); 
    if(now - dt < 1000) return; //1000 === 1 second 
    //do stuff 
    dt = now; 
});