setTimeout
とを使用する単純なfadeIn/fadeOutループアニメーションを作成していますclearTimeout
。これまでの私のコードは次のとおりです。
HTML:
<p><span>loading...</span></p>
<a href="#" id="btn">STOP</a>
Javascript(jQuery1.9.1):
var _timer;
var _timerArr = [];
var loaderBlink = function() {
$('p').find('span').fadeTo(200,.4).fadeTo(200,1,function() {
_timer = setTimeout(function() { loaderBlink() }, 200);
_timerArr.push(_timer);
//console.log('loading...');
});
};
var clearTimer = function() {
$.each(_timerArr, function(i,val) {
clearTimeout(val);
console.log(val);
});
$('#btn').remove();
$('p').fadeOut('fast');
return false;
};
$('#btn').on('click', function() {
clearTimer();
});
loaderBlink();
デモ:http://jsfiddle.net/nori2tae/MW9E8/
問題は、後で[停止]ボタンをクリックしてすべてのタイマーをクリアするためにすべてのタイマーを配列にプッシュしても、タイマーが停止せずに続行する場合があることです。
setTimeout
おそらく、との概念を完全には理解していませんclearTimeout
。これに対する解決策が必要であり、これら2つの機能を理解するのに役立ちます。