我偶然发现了setTimeout的问题。
$current.removeClass(class2);
setTimeout(function(){$current.css('display', 'none')},1000);
if(!$current.is('#' + id)){
$('#' + id).css('display','block');
setTimeout(function(){$('#' + id).addClass(class2)}, 1000);
$current = $('#' + id);
}
我希望在添加css“display:none”之后执行if语句。我怎样才能做到这一点?我认为setTimeout会停止执行代码,然后在函数运行后继续。
答案 0 :(得分:1)
您将该代码置于超时内的函数内(代码间距也很重要......):
$current.removeClass(class2);
setTimeout(function() {
$current.css('display', 'none')
if( !$current.is('#' + id) ) {
$('#' + id).css('display','block');
setTimeout(function() {
$('#' + id).addClass(class2)
}, 1000);
$current = $('#' + id);
}
},1000);
答案 1 :(得分:1)
setTimeout
将在n毫秒后运行该函数,但脚本的其余部分将继续运行。
如果您希望其余代码在display:none
之后才能运行,您还需要将其移动到函数中:
$current.removeClass(class2);
setTimeout(function(){
$current.css('display', 'none');
if(!$current.is('#' + id)){
$('#' + id).css('display','block');
setTimeout(function(){
$('#' + id).addClass(class2);
}, 1000);
$current = $('#' + id);
}
},1000);