2015-09-25 31 views
2

我想運行「window.googletag.pubads()。refresh();」 一次當用戶滾動> 2000px時。我如何正確地做到這一點?舉例:

$(window).scroll(function() { 
    var st = $(this).scrollTop(); 
    var lastScrollTop = 2000; 

    if (st > lastScrollTop) { 
     window.googletag.pubads().refresh(); 
     console.log('refresh'); 
    } 
}); 

回答

2

我不認爲將名爲flag一個boolean數據類型是非常全面的,尤其是當OP似乎並不明白了布爾的需要。它沒有告訴他他需要做什麼。上面的答案是正確的,但是未來人們在使用這個問題時可能並不全面,他們可能不明白「flag」的含義。

不知道何時使用boolean數據類型是一個更大的問題的症狀,應該解釋,所以OP不會無知。

你需要的是一個boolean variable。基本上,你想檢查是否有事。我們已經滾動到這個位置了嗎?不,所以讓我們觸發它。我們已經這樣做了嗎?然後它不會再滾動,直到頁面刷新。

讓我們來創建bool:var scrolledToPosition = false;。這必須放置在滾動邏輯的以外的,否則它將每一次都被重置,並且它將不起作用。

您希望它最初設置爲false,因此即將推出的附加邏輯將正確觸發。

然後,在您的if語句中,if (st > lastScrollTop),您需要添加&& !scrolledToPosition

感嘆號的意思是「不」。例如,如果bool scrolledToPosition等於false,則可以使用!booleanValue進行檢查。您可以排除感嘆號來檢查它是否爲真。例如,if (scrolledToPosition)

下面是完整的代碼:

var scrolledToPosition = false; 
var lastScrollTop = 2000; 

$(window).scroll(function() { 
    var st = $(this).scrollTop(); 

    if (st > lastScrollTop && !scrolledToPosition) { 
     window.googletag.pubads().refresh(); 
     console.log('refresh'); 
     scrolledToPosition = true; 
    } 
}); 

如果你需要重置,只需設置scrolledToPositionfalse。像這樣:

scrolledToPosition = false; 
+1

感謝您的深入解釋! – ivanasetiawan

+0

不客氣。如果這回答了您的問題,並且這是正確的,請檢查我們的答案之一作爲正確的解決方案。 –

1

您可以保留一個全局標誌並在每次滾動時檢查該值。您可以檢查我的版本:

var flag = false; 
var lastScrollTop = 2000; 
$(window).scroll(function() { 
    var st = $(this).scrollTop(); 
    if (st > lastScrollTop && !flag) { 
     window.googletag.pubads().refresh(); 
     console.log('refresh'); 
     flag = true; 
    } 
}); 
相關問題