setTimeout函数不会停止执行?

时间:2014-10-13 14:27:36

标签: javascript jquery

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

2 个答案:

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