2011-03-09 60 views
1

如何在显示“加载”消息时单击/选中以展开表格列,并在消息消失后​​立即隐藏该消息。 Here是我到目前为止的演示。我可以让消息出现,但是一旦工作完成就无法隐藏。当我试图展开一张大桌子时,它似乎很有用,我认为让用户知道它正在工作会很好。任何帮助/建议将不胜感激。显示/隐藏HTML表格的加载消息

$(document).ready(function() { 
    $("#load").hide(); 
    $("#check").live("click", function() { 
     $("#load").show(); 
     if ($("#check").is(":checked")) { 
      $(".hidden").show(); 
     } else { 
      $(".hidden").hide(); 
     } 
    }); 
    $("#load").hide(); 
}); 

回答

0

您确实需要加载消息吗?

反正,你可以隐藏这样的:

$(document).ready(function() { 
    $("#load").hide(); 
    $("#check").live("click", function() { 
     $("#load").show(); 
     if ($("#check").is(":checked")) { 
      $(".hidden").show(); 
      $("#load").hide(); 
     } else { 
      $(".hidden").hide(); 
      $("#load").hide(); 
     } 
    }); 
    $("#load").hide(); 
}); 
+0

对不起,我忘记说,它似乎有用,当我试图扩大一个大型的表,这需要几秒钟来扩大。我认为让用户知道它正在工作会很好。 – DGT 2011-03-09 19:15:09

0

这是创建一个载入文本,因为这个只需要一个回流以DOM的,所以你其实并没有看到“加载有点无用的东西.. “ 信息。

,但如果你想创建一个Ajax调用至极获取数据形成的服务器,这将是有益的,但在这个usuage这是无用的

,但如果你坚持这一点,你需要创建一个新的“线程”检测是显示的表格。例如

$("#link").click(function() { 
$("#text").html("loading..."); 
$("#table").show(); 
window.setTimeout(function() {while(true){if($("table").is(":visible")){$("#text").html("");break;}}},0); 
}); 
0

这是页面生命周期的问题。您的代码中没有任何阻塞事件,并且您的代码没有回调可以知道“现在显​​示隐藏的元素,隐藏加载栏”。看看这个更新的jsfiddle。我没有回调,而是告诉代码在显示或隐藏后等待0.5秒,然后调用方法来隐藏加载消息。

如果你正在做一些回调,比如AJAX帖子,那么你可以在请求成功或失败时调用它。

+0

woops,修复了jsfiddle链接 – bwest 2011-03-09 19:17:47