如何使用 jQuery 显示“忙碌”指示器?

IT技术 javascript jquery
2021-03-07 17:23:00

如何在网页的特定点显示旋转的“忙碌”指示器?

我想在 Ajax 请求开始/完成时启动/停止指示器。

这真的只是显示/隐藏动画 gif 的问题,还是有更优雅的解决方案?

6个回答

您可以只显示/隐藏 gif,但您也可以将其嵌入到 ajaxSetup 中,以便在每个 ajax 请求中调用它。

$.ajaxSetup({
    beforeSend:function(){
        // show gif here, eg:
        $("#loading").show();
    },
    complete:function(){
        // hide gif here, eg:
        $("#loading").hide();
    }
});

一个注意事项是,如果您想在没有加载微调器的情况下执行特定的 ajax 请求,您可以这样做:

$.ajax({
   global: false,
   // stuff
});

这样我们之前所做的 $.ajaxSetup 就不会影响global: false.

更多详细信息,请访问:http : //api.jquery.com/jQuery.ajaxSetup

@gov,定位 gif 取决于布局,您可以隐藏/显示放置它的 div,而不是修改 dom。
2021-04-29 17:23:00
如果您有 2 个 XHR,并且第一个在第二个开始后立即完成,则即使第二个 XHR 仍在运行,此代码也会隐藏加载指示器。
2021-04-29 17:23:00
这看起来很有希望,但它对我不起作用,最终尝试了另一种有效的解决方案。stackoverflow.com/questions/7003707/...
2021-05-06 17:23:00
@RabidFire,实际上这里不需要 global,它只是为了 $.ajax
2021-05-07 17:23:00
+1 为ajaxSetup()如果能提供有关该global财产的进一步解释,则更愿意
2021-05-16 17:23:00

jQuery 文档建议执行以下操作:

$( document ).ajaxStart(function() {
  $( "#loading" ).show();
}).ajaxStop(function() {
  $( "#loading" ).hide();
});

#loading带有忙指示符的元素在哪里

参考:

这些似乎比 beforeSend 和 complete 更有用,因为 ajaxStart 将“...注册一个在第一个 Ajax 请求开始时要调用的处理程序”,而 ajaxStop 将“...注册一个在所有 Ajax 请求完成时要调用的处理程序”-这些处理并发异步消息并且不会过早地隐藏“请等待”指示器。
2021-04-22 17:23:00

我倾向于像其他人所说的那样显示/隐藏 IMG。我找到了一个很好的网站,可以生成“加载 gif”

链接 我只是将它放在 a 中div并默认隐藏display: none;(css)然后当您调用该函数时显示图像,一旦完成再次隐藏它。

是的,这真的只是显示/隐藏动画 gif 的问题。

@mike 我的解决方案在所有浏览器中都适用于我的项目,你认为这是个好方法吗
2021-04-21 17:23:00
同意。显示/隐藏图像很容易,所有浏览器都可以理解。有几个用于图像的 jquery 旋转插件,但它们不适用于所有浏览器。
2021-04-23 17:23:00

我在我的项目中做到了,

制作一个带有背景 url 作为 gif 的 div ,这只是动画 gif

<div class="busyindicatorClass"> </div>

.busyindicatorClass
{
background-url///give animation here
}

在您的 ajax 调用中,将此类添加到 div 并在 ajax 成功中删除该类。

它会做到这一点。

如果你需要其他东西,请告诉我,我可以给你更多细节

在 ajax 成功中删除类

success: function(data) {
    remove class using jquery
  }