我已经实现了一个jQuery Bootgrid。我想管理显示和隐藏我已经实施的装载机。
加载器显示并隐藏$("#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);
这仍然给了我同样的闪烁错误。
答案 0 :(得分:0)
我使用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();
});