我正在使用Jonathan Sampson的answer作为我的jquery忙碌加载程序。它100%工作并检测任何jquery发布等,并显示加载器。
我的问题是,大多数情况下,当我从数据库中获取信息时,我希望用户等待,以便加载器显示。
然而,我想要的是,只有当我将信息保存到数据库时才能显示加载程序的某些功能。
可以找到小提琴here
例如,下面导致加载程序运行。我怎么能修改这个,所以mockjax知道不运行这个函数呢?$(document).on("click", function(){
$.get("/mockjax");
});
感谢您一如既往的帮助。
答案 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/
希望,这有帮助。