2013-05-28 22 views
6

我有以下的jQuery函數觸發aTestEvent()當用戶滾動水平近500個像素:將觸發一次我只希望aTestEvent()jQuery的 - 滾動功能保持觸發:只有當請

jQuery(document).scroll(function(){ 
    if(jQuery(this).scrollLeft() >= 500){ 
      aTestEvent(); 
}}); 

這裏的問題!但是,每當用戶滾動回到頁面的開頭,然後再次超過500像素時,便會再次觸發aTestEvent()

我們如何調整上面的代碼,使觸發器只發生第一次用戶滾動過去500像素?

回答

14

您可以使用onoff方法:

$(document).on('scroll', function() { 
    if($(this).scrollLeft() >= 500) { 
     $(document).off('scroll'); 
     aTestEvent(); 
    } 
}); 

http://jsfiddle.net/3kacd/

請注意:此代碼片段可以「關閉」所有的滾動事件提供一個特定的頁面上,但翻屏僅供滾動處理程序而不會干擾其他滾動處理程序,我們可以使用一個名稱空間。名稱空間與CSS類相似,因爲它們不是分層的;只有一個名字需要匹配。

$(document).on('name1.scroll', function() { 
    if($(this).scrollLeft() >= 500) { 
     $(document).off('name1.scroll'); 
     aTestEvent(); 
    } 
}); 

http://jsfiddle.net/shekhardtu/3kacd/57/

+0

這做的伎倆!非常感謝你。我會接受一次。 – tehSUPERADMIN

+0

@tehSUPERADMIN不客氣。 – undefined

+0

另一個方便的技巧是鮮爲人知的.one()方法。 http://api.jquery.com/one/ 每隔一段時間都會非常有用,但由於if()語句 - 它只會觸發一次,即使if條件爲假。 –