2011-03-09 63 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