2015-11-15 5 views
2

В моем коде jQuery у меня возникли проблемы с соблюдением правильного порядка выполнения. Я осмотрелся и узнал, что использование опции setTimeout() - это вариант, но я не уверен, где его использовать. В настоящее время структура кода, как показано ниже с setTimeout():Поддержание порядка выполнения jQuery

$(document).ready(function(){ 
    $('#search-submit').on('click', function(){ 
    var keyword = $('#search-input').val(); 
    $(".loading").show(); 

    setTimeout(function() { 
     if(){ 
     //some conditions and calls to post 
     } 
     $(".loading").hide(); 
    }, 0); 
    } 
    } 

hide() должен вступить в силу после того, как если блок завершит выполнение, но теперь она непосредственно скрывает элемент.

+1

дает 'SetTimeout()' что-то больше, чем '0' – Ramanlfc

ответ

0
$(document).ready(function(){ 
    $('#search-submit').on('click', function(){ 
    var keyword = $('#search-input').val(); 
    $(".loading").show(); 

    if(){ 
     //some conditions and calls to post 
    } 

    setTimeout(function() { 
     $(".loading").hide(); 
    }, 1500); 
    } 
} 
+0

по крайней мере сказать несколько слов о том, что вы сделали здесь – kaveman

1

На самом деле, JQuery имеет более изысканный способ сделать вещи синхронным:

$(function() { 

    $('#search-submit').on('click', function(){ 

     var keyword = $('#search-input').val(); 

     $('.loading').show().queue(function() { 

      if (...) { 
      //some conditions and calls to post 
      } 

      $(this).dequeue(); 

     }).queue(function() { 

      $(this).hide().dequeue(); 
     }); 
    }); 
}); 
Смежные вопросы