2010-12-18 36 views
1

我想替換我的(#loader)div中的文本信息。我使用了兩個函數show_info()和replace_info()。替換文本信息

$('#measure_submit').click(function(){ 
     show_info("Sending params ..."); 
     get_data(); 
    }); 

function get_data(){ 
    $.ajax({ 
      url: '/controller/view', 
      data : { ... }, 
      type: 'POST', 
      typedata: 'text', 

      success: function(data){ 
       hide_info(); 
      }, 
      beforeSend : function(data) { 
       replace_info("Loading data ..."); 
      } 
     }); 

function show_info(string){ 
     $('#loader').text(string); 
     $('#info_box').fadeIn(2000); 
    } 

function replace_info(string){ 
    $('#loader').fadeOut(2000); 
    $('#loader').text(string); 
    $('#loader').fadeIn(2000); 

} 

但我只能看到文本「加載數據...」。即使有fadeOut(2000),也會完全跳過「發送參數...」。

我甚至嘗試setTimeout(replace_info(「Loading data ...」),4000);但沒有運氣。

任何人都知道麻煩在哪裏? 任何幫助都很受歡迎。

感謝彼得

回答

1

你看到這一點,因爲.text()不是排隊的功能如動畫的,而是你得排隊,或與.fadeOut()完成調用它,就像這樣:

function replace_info(string){ 
    $('#loader').fadeOut(2000, function() { $(this).text(string); }).fadeIn(2000); 
} 

.queue()版本是這樣的:

function replace_info(string){ 
    $('#loader').fadeOut(2000) 
       .queue(function(n) { $(this).text(string); n(); }) 
       .fadeIn(2000); 
} 
+0

感謝尼克,這就是我一直在尋找。燦爛。 – praethorian 2010-12-18 19:17:41