如果 div html = Ready,我如何阻止函数重复,这是我的代码
(function(){
var Load_Div_Error = $( ".Load_Div_Error" ).html();
if(Load_Div_Error == "Ready") {
$( "div.Load_Div_Error" ).text( "Test" );
}
setTimeout(arguments.callee, 2000);
})();
如果 div html = Ready,我如何阻止函数重复,这是我的代码
(function(){
var Load_Div_Error = $( ".Load_Div_Error" ).html();
if(Load_Div_Error == "Ready") {
$( "div.Load_Div_Error" ).text( "Test" );
}
setTimeout(arguments.callee, 2000);
})();
jQuery.html()
可能会在“Ready”周围返回空格。在比较之前删除它..
(function myLoad(){
var Load_Div_Error = $( ".Load_Div_Error" ).html();
if($.trim(Load_Div_Error) == "Ready") // remove the whitespace before comparing
$( "div.Load_Div_Error" ).text( "Test" );
else
setTimeout(myLoad, 2000); // run again only if Load_Div_Error != 'Ready'
})();
我已替换arguments.callee
为命名函数,因为它在严格模式下被禁止 - 最好不要使用它
将else
块添加到您的if
:
if(Load_Div_Error == "Ready") {
$( "div.Load_Div_Error" ).text( "Test" );
} else {
setTimeout(arguments.callee, 2000);
}
setTimeout
仅当 Div 内容 != Ready时才会启动
您可以将 设置Timeout
为变量并在不再需要后将其清除:
(function(){
var timer;
var Load_Div_Error = $( ".Load_Div_Error" ).html();
if(Load_Div_Error == "Ready") {
$( "div.Load_Div_Error" ).text( "Test" );
clearTimeout(timer);
}
else
timer = setTimeout(arguments.callee, 2000);
})();
或者,我正在考虑在使用该setInterval
函数时清除一个 Interval,这会更好地代替setTimeout
IMHO。
但是,是的,如果您只是添加一个 else 语句并将其setTimeout
放在其中,它也可以工作,因为setTimeout
不需要清除。