var TimeOut; //Global
$('[name^="HMapDot"]').each(function(i){
TimeOut = setTimeout(function(){
$('[name^="HMapDot"]').css({'visibility':'hidden'});
$('#HMapTime').html($('[name="HMapDot'+i+'"]').attr('role')+' [ '+(i+1)+' ]');
$('[name="HMapDot'+i+'"]').css({'visibility':'visible'});
},i * iTime);
if(i == (iMany-1) || $('[name^="HMapDot"]').length == 0){ clearTimeout(TimeOut); return false; }
});
我的这段代码工作得很好,使用 JQuery 2.x 和 AJAX 来提取数据。我的意图是延迟“地图”上的点每秒出现/消失(滑块值)。现在,当我单击“停止”时,页面、值、元素将为 $.remove,但计时器将继续倒计时。如何停止计时器和 $.each?
下面的修改代码有效:
var TimeOuts = []; //Global
var T;
function ClearTimeOuts(){
for(var i in TimeOuts){
clearTimeout(TimeOuts[i]);
}
}
$('[name^="HMapDot"]').each(function(i){
T = setTimeout(function(){
$('[name^="HMapDot"]').css({'visibility':'hidden'});
$('#HMapTime').html($('[name="HMapDot'+i+'"]').attr('role')+' [ '+(i+1)+' ]');
$('[name="HMapDot'+i+'"]').css({'visibility':'visible'});
if(i == (iMany-1) || $('[name^="HMapDot"]').length == 0){
ClearTimeOuts();
return false;
}
},i * iTime);
TimeOuts.push(T);
});