串联执行操作

时间:2013-05-09 11:43:43

标签: jquery html

我正在尝试按顺序执行操作但是在我的代码警报消息中打印了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 个答案:

答案 0 :(得分:1)

您的代码说:

“在两秒内运行此淡出功能。现在提醒一些事情。”

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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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语句将在文档准备就绪后立即运行,因为没有任何内容可以阻止它们。程序执行按顺序从上到下运行。

或者,如果希望在 fadeOut完成后显示警告,则可以运行以下代码: -

$(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/

答案 3 :(得分: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/

祝你好运。