我有一個腳本,當我滾動到一個元素,但我希望腳本只觸發一次,我試圖通過設置變量execute
爲虛假腳本後計算到一個數字被解僱。但它仍然計數了個遍,(我說明了情況多在註釋掉的代碼)不能執行一次函數
$(function() {
var oTop = $('.stats').offset().top - window.innerHeight;
$(window).scroll(function(){
var pTop = $('body').scrollTop();
if(pTop > oTop){
start_count();
}
});
});
function start_count(){
var executed = false; // <= variable to false.
if (!executed){ // <= make sure it didn't executed before.
$('.stats h1').countTo({
onComplete: function() {
var elementToPrepend = '<span style="margin-left:4px;">+</span>';
$(elementToPrepend).hide().appendTo(this).fadeIn();
}
});
executed = true; // <= the count() function already executed
}
}
.empty-space{
height: 500px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-countto/1.2.0/jquery.countTo.js"></script>
<div class="empty-space">
scroll down...
</div>
<div class="stats">
<h1 data-from="200" data-to="2000" data-speed="1750" data-refresh-interval="50">200</h1>
</div>
<div class="empty-space">
</div>
正如你可以看到,如果你達到它保持連連計數的反向件,是有沒有辦法解決這個問題,並讓它運行一次?任何幫助,將不勝感激。
'executed'範圍限定爲低。該方法結束後會被銷燬。 – Taplar
aka每當你調用'start_count'你重新定義'執行' – epascarello
你應該在函數外部定義它,所以它不會每次都被重置。 – Cernodile