[英]jQuery Bootgrid how to check if bootgrid is still loading
我已經實現了jQuery Bootgrid。 我想管理顯示和隱藏已實現的裝載程序。
使用$("#ajaxLoader").show();
顯示和隱藏加載器$("#ajaxLoader").show();
和$(“#ajaxLoader”)。hide();`。
我將Bootgrid初始化實現如下:
var grid = $('#grid').on("load.rs.jquery.bootgrid", function () {
$("#ajaxLoader").show();
}).bootgrid({
ajax: true,
ajaxSettings: {
method: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false
},
searchSettings: {
delay: 500,
},
url: myURL,
rowCount: [5, 10, 50, 75, 100, 200, -1]
}).on("loaded.rs.jquery.bootgrid", function (e) {
$("#ajaxLoader").hide();
});
現在這可以正常工作,但是我想通過兩種方式對其進行優化:
Bootgrid的搜索功能似乎具有它自己的加載器,因此是否有一種方法可以在搜索發生時不顯示我的Ajax加載器?
在短查詢中,我的加載程序會彈出並非常快速地隱藏。 有什么辦法可以延遲這種情況嗎?
解決選項2可能會自己解決選項1,但是無論如何,這就是我針對選項2嘗試過的方法。
我嘗試了setTimeout(function () { $("#ajaxLoader").show(); }, 1000);
,但是它再也不會被隱藏。 我通過使用setTimeout(function () { $("#ajaxLoader").hide(); }, 1000)
解決了這個問題,但是它閃爍顯示並隱藏了不必要的內容。
因此,理想情況下,在應用該功能之前,我需要檢查Bootgrid是否仍在加載。
如何解決我的加載問題?
編輯:
我也嘗試設置一個loading
變量,在我的load
方法中,我說:
loading = true;
setTimeout(function () { if (loading) { $("#ajaxLoader").show(); }}, 1000);
以及我loaded
事件中的以下內容:
setTimeout(function () { $("#ajaxLoader").hide(); }, loaderDelay);
那仍然給了我同樣的閃爍錯誤。
我使用clearTimeout()
函數解決了該問題,如下所示:
var showLoader;
var grid = $('#grid').on("load.rs.jquery.bootgrid", function () {
showLoader = setTimeout(function () { $("#ajaxLoader").show(); }, 1000);
}).bootgrid({
ajax: true,
ajaxSettings: {
method: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false
},
searchSettings: {
clearTimeout(showLoader);
delay: 500,
},
url: myURL,
rowCount: [5, 10, 50, 75, 100, 200, -1]
}).on("loaded.rs.jquery.bootgrid", function (e) {
$("#ajaxLoader").hide();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.