2011-02-17 91 views
3

我想檢測,如果一個元素被滾出並做了下面的代碼如何檢測元素是否已滾出,但只有一次?

$(window).bind('scroll', function(){ 
    var $btn = $('#intro div.summary a[href=#top]'); 
    if($(window).scrollTop() > ($btn.offset().top+$btn.height())){ 
     console.log('out'); 
    } 
}); 

我有一些正文中的主播,我很希望能克隆並進行固定的資產淨值進行一次div.intro被滾出。

我的問題是,只要元素不在視圖中,代碼就會觸發,但會一直點亮。所以我不能再做任何事情了,因爲更多事情會繼續發射。

有一種方法可以一旦熄滅就會觸發'out'並且一旦進入就會'進入'?除了設置一個變量。

回答

7

要,如果我複製到檢測是否存在執行事件只有一次,你可以做

$(window).one('scroll', function(){ 
    var $btn = $('#intro div.summary a[href=#top]'); 
    if($(window).scrollTop() > ($btn.offset().top+$btn.height())) { 
     console.log('out'); 
    } 
}); 
+0

想必它只能被解僱一次?所以有一次,我們出去,然後回到它,它不會再次發射? – benpalmer 2011-02-17 21:31:23

1

好,最簡單的解決辦法是unbind事件也觸發後:

$(window).bind('scroll', function(){ 
    var $btn = $('#intro div.summary a[href=#top]'); 
    if($(window).scrollTop() > ($btn.offset().top+$btn.height())) { 
     console.log('out'); 
     $(window).unbind('scroll'); 
    } 
}); 
相關問題