2013-05-09 4 views
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"); 
    } 
}); 

Пожалуйста, помогите,

ответ

1

Ваш код говорит:

"Запустить эту функцию затухания звука через две секунды Теперь предупреждение что-то.."

Если вы хотите, чтобы предупреждение появлялось после запуска функции fade out, вам необходимо поместить этот код внутри функции, которая запускается за две секунды.

1

Звонки setTimeout и fadeOut оба являются 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); 
}); 
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/

Условный заявления в вашем примере будет работать, как только документ будет готов, пока ничто не мешает им. Выполнение программы выполняется сверху вниз.

В качестве альтернативы, вы можете запустить следующий код, если вы хотите оповещения, чтобы показать после 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/

0

Вы используете setTimeout. Когда вы установите его, вы вызываете небольшой интервал (2 секунды), прежде чем jQuery применит эффект к элементу. Деталь, если 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/

удачи.

Смежные вопросы