繁体   English   中英

mockjax loader - 停止运行特定功能

[英]mockjax loader - stop from running for specific function

我正在利用Jonathan Sampson对我的jquery busy loader的回答 它100%工作并检测任何jquery发布等,并显示加载器。

我的问题是,大多数情况下,当我从数据库中获取信息时,我希望用户等待,以便加载器显示。

但是,我想要的是,只有当我将信息保存到数据库时才能显示加载程序的某些功能。

小提琴可以在这里找到

例如,下面导致加载程序运行。 我如何修改这个,以便mockjax知道不运行此功能?

$(document).on("click", function(){
    $.get("/mockjax");        
});

一如既往地感谢您的帮助。

短版(带代码)

单击标题 - 动画

单击段落 - 无动画

http://jsfiddle.net/hPS2v/

$.ajax({
    url: "/mockjax",
    type: "GET",
    global: false //This is the key
});

-

稍长的版本

$ .ajax()方法中有一个很好的变量可以让你停止ajax事件的触发(但不是ajax本身)。 这称为全球性 来自文档

全局 (默认值:true)

类型:布尔值

是否为此请求触发全局Ajax事件处理程序。 默认值为true。 设置为false以防止触发像ajaxStart或ajaxStop这样的全局处理程序。 这可用于控制各种Ajax事件。

考虑到这一点,我略微改变了你的代码,以展示我们如何使这项工作。

1)将AJAX调用移动到具有2个参数的函数中:URL和eventTrigger。 基本上我们希望URL为“/ mockajax”,并且eventTrigger为true或false(取决于是否以及何时显示动画)

2)我从$(文档)中取出了事件处理程序,并在标题标签和p标签中添加了2个事件,因此我可以使用相同的代码(1个带1和1个没有动画)演示AJAX在2个位置工作

希望这可以帮助!

您可以使用变量作为标志,表示您不显示加载程序的首选项。

//let say, showLoader, by default true
var showLoader = true;

现在,根据需要将其添加到您的ajax设置中。

$(document).on({
    ajaxStart: function () {
        // if showLoader true, then shows loading image
        if (showLoader)
            $body.addClass("loading");
    },
    ajaxStop: function () {
        $body.removeClass("loading");
        // set showLoader to true
        showLoader = true;
    }
});

根据您的要求更改showLoader状态。

$(document).on("click", function (e) {
    // if target element is anchor tag, then do not show loading image - example
    if (e.target.tagName === 'A') {
        showLoader = false;
    }
    $.get("/mockjax");
});

JSFiddle: http//jsfiddle.net/VpDUG/5177/

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM