jQuery Bootgrid 如何检查 bootgrid 是否仍在加载
jQuery Bootgrid how to check if bootgrid is still loading
我已经实现了 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);
那仍然给我同样的闪烁错误。
我使用 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();
});
我已经实现了 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);
那仍然给我同样的闪烁错误。
我使用 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();
});