2

我正在尝试连续执行操作,但是在我的代码中,警报消息是打印的 firat,尽管我是在某些操作后编写的。

这是我试过的小提琴。http://jsfiddle.net/wggua/635/

   $(document).ready(function() { 
    var a=1;
    setTimeout(function() { 
        $('#dvData').fadeOut(); 
 }, 2000); 

    if(a==1)
    {
        alert("value i s 1");
    }
    else
    {
         alert("value is 0");   
    }
});

请帮忙,

4

4 回答 4

1

你的代码说:

“在两秒钟内运行这个淡出功能。现在提醒一些东西。”

如果您希望在淡出功能运行后出现警报,那么您还需要将该代码放入在两秒钟内运行的函数中。

于 2013-05-09T11:46:14.387 回答
1

setTimeoutfadeOut调用都是异步的,因此您的警报会在其中任何一个完成之前触发。您可以将回调函数传递给将在动画完成时执行的 fadeOut 方法(请参阅文档)。像这样的东西:

 $(document).ready(function() { 
    var a=1;
    setTimeout(function() { 
        $('#dvData').fadeOut('slow', function() {
            // This function will execute when the fade out animation is complete
            if(a==1)
            {
                alert("value i s 1");
            }
            else
            {
                 alert("value is 0");   
            }
        }); 
 }, 2000); 
});
于 2013-05-09T11:47:36.947 回答
0

您的意思是您希望警报与超时一起出现吗?如果是这样,您的代码需要如下所示:-

 $(document).ready(function() { 
    var a=1;
    setTimeout(function() { 
        $('#dvData').fadeOut(); 
    if(a==1)
    {
        alert("value i s 1");
    }
    else
    {
         alert("value is 0");   
    }

    }, 2000); 


});

http://jsfiddle.net/wggua/637/

您示例中的 if 语句将在文档准备好后立即运行,因为没有什么可以阻止它们。程序执行顺序从上到下。

或者,如果您希望在淡出完成显示警报,则可以运行以下代码:-

$(document).ready(function() { 
    var a=1;
    setTimeout(function() { 
        $('#dvData').fadeOut(400,function() {
            if(a==1)
            {
                alert("value i s 1");
            }
            else
            {
                 alert("value is 0");   
            }

        }); 

 }, 2000); 

http://jsfiddle.net/wggua/638/

于 2013-05-09T11:48:07.277 回答
0

你正在使用setTimeout. 在您设置它时,您需要在 jQuery 对元素应用效果之前调用一个小间隔(2 秒)。如果setTimeout是异步函数的详细信息。因为这个警报是在调用之前jQuery.fadeOut调用的。

如果您真的想要间隔,只需使用方法中的参数设置回调complete.fadeOut如下所述:http: //api.jquery.com/fadeOut/

以下是一些工作代码示例:

$(document).ready(function() { 
   var a=1;
   function callback(){
       if(a==1)
       {
           alert("value i s 1");
       }
       else
       {
           alert("value is 0");   
       }
   }
   setTimeout(function() { 
      $('#dvData').fadeOut(400, callback); 
   }, 2000); 
});

PS:作为回调的命名函数是您可读性的朋友。而 400 是相对于 400 毫秒,默认为jQuery.fadeOut方法。

这是一个工作小提琴:http: //jsfiddle.net/fjorgemota/QMVG2/

祝你好运。

于 2013-05-09T11:51:49.560 回答