setTimeout函数不会停止执行?

我偶然发现了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会停止执行代码,然后在函数运行后继续。

你把代码放在函数内超时(代码间距也很重要……):

 $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); 

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);