mockjax loader - 停止运行特定功能

时间:2014-03-06 11:52:14

标签: javascript jquery loader preloader mockjax

我正在使用Jonathan Sampson的answer作为我的jquery忙碌加载程序。它100%工作并检测任何jquery发布等,并显示加载器。

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

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

可以找到小提琴here

例如,下面导致加载程序运行。我怎么能修改这个,所以mockjax知道不运行这个函数呢?

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

感谢您一如既往的帮助。

2 个答案:

答案 0 :(得分:1)

短版(带代码)

点击标题 - 动画

点击段落 - 无动画

<强> 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个事件,因此我可以使用相同的代码演示在两个地方工作的AJAX(1和1没有动画)

希望这有帮助!

答案 1 :(得分:1)

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

//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/

希望,这有帮助。