2010-12-18 60 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