2017-07-17 15 views
0

jQuery中有一個前置行,用於從Grafana加載生成的圖像。 我有另一個div顯示「正在加載」文本,因爲Grafana圖像需要大約3秒的時間來生成和加載。jQuery中的img prepend加載時隱藏div

問題是,如果我在前線之後立即隱藏該div,它會立即隱藏自己。

有沒有什麼解決辦法嗎?

$("#t1_temp_act").click(function() { 
 
    console.log("append"); 
 
    $("#grafana-image").remove(); 
 
    $("termostat1_grafana").hide(); 
 
    $(".termostat1_grafana_loading").show(); 
 
    $(".termostat1_grafana").prepend("<img id=\"grafana-image\" src=\"http://192.168.1.113:3000/render/dashboard-solo/db/legadademo?orgId=1&from=now-1d&to=now&panelId=3&width=670&height=350&tz=UTC%2B02%3A00\">Nalaganje v teku...</img>");  
 
    $(".termostat1_grafana").show(); 
 
    sleep(3000); 
 
    $(".termostat1_grafana_loading").hide();  
 
});
<div class="termostat1_grafana_loading" style="text-align: center; width: 100%;"><b>Nalaganje v teku...</b></div> 
 
<div class="termostat1_grafana" style="width:100%;margin-top: 10px;">

回答

0

睡不javascript中的函數。你需要使用setTimeoutsetInterval

setTimeout(function() { 
    $(".termostat1_grafana_loading").hide(); 
},3000); 

更多信息here

2

當你基本上是「猜測」 3秒,這是不是很科學,有一個更好的辦法。

相反,你可以用.fadeIn()替代.show()和使用回調:

$(".termostat1_grafana").fadeIn(10, function() { /* 10 is almost as fast as .show() */ 
    // animation complete 
    $(".termostat1_grafana_loading").hide(); 
});