我已经实现了一个 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);
那仍然给了我同样的闪烁错误。