jQuery Bootgrid如何检查bootgrid是否仍在加载

时间:2017-04-06 10:31:54

标签: javascript jquery ajax loading jquery-bootgrid

我已经实现了一个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();
});

现在这个工作正常,但我想以两种方式优化它:

  1. Bootgrid的搜索功能似乎拥有它自己的加载器,所以有没有办法在搜索发生时不显示我的ajax加载器?

  2. 我的加载程序会弹出并快速隐藏在短查询中。有没有办法可以推迟发生这种情况?

  3. 解决选项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);
    

    这仍然给了我同样的闪烁错误。

1 个答案:

答案 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();
});