2013-03-02 20 views
0

如何防止在網頁底部觸發這種雙重觸發。如何在頁面底部停止雙重javascript觸發器

當從底部到達100px時,您會看到警報消息,但是當您觸碰到底部時,您也會看到它,即使打到網頁底部,我也只想看到它。

這裏是鏈接:

double triggering

,代碼:

$(window).scroll(function() { 
    if($(window).scrollTop() + $(window).height() > $(document).height() - 100) { 
     alert("bottom!"); 
    } 
}); 

編輯:

問題是,我追加多個div的網站,我不有固定的數量,所以這就是爲什麼我需要檢查我是否已經觸及頁面的底部。

+0

搜索家庭在你問,同樣的問題在這裏http://stackoverflow.com/questions/3898130/how-to-check-if-a-user-has-scrolled-to-the-bottom – 2013-03-02 20:40:44

回答

0

一般的答案是隻要事件處理程序一旦被觸發就移除它。

jQuery可以爲你做到這一點,但是,它的.one()事件處理函數。

+0

使用'.one'不起作用在這個用例中,因爲滾動處理程序通常需要被多次調用。 – pdoherty926 2013-03-02 20:42:06

0

試試這個:

var beenOnBottom = false; 
$(window).scroll(function() { 

    if($(window).scrollTop() + $(window).height() > $(document).height() - 100) { 
     if(!beenOnBottom) 
     { 
      alert("bottom!"); 
      beenOnBottom = true; 
     } 
    } 
}); 

如果你想顯示當您再次上去的消息,您可以重置beenOnBottom變量只要上面去了100像素值

+1

不應該'var beenOnBottom = false;'在事件處理程序之外?否則,它會在每次滾動事件時重置。 – pdoherty926 2013-03-02 20:43:08

+0

問題已被編輯 – 2013-03-02 20:50:37

+0

@ethagnawl你是對的。我改變了我的答案。 – Pbirkoff 2013-03-03 13:48:53

1

你可以設置一個標誌控制此行爲:

var alerted = false; 
$(window).scroll(function() { 
    if ($(window).scrollTop() + $(window).height() > $(document).height() - 100) { 
     if (!alerted) { 
      alert("bottom!"); 
      alerted = true; 
     } 
    } 
    else alerted = false; 
}); 

http://jsfiddle.net/gWD66/1117/

+0

問題已編輯 – 2013-03-02 20:50:02

相關問題