首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个方法的Jquery回调

问每个方法的Jquery回调
EN

Stack Overflow用户
提问于 2018-04-29 09:39:58
回答 3查看 45关注 0票数 1

我在使用jQuery each()方法时遇到了一些小问题:

代码语言:javascript
复制
jQuery(":button[attributeFoo=\"bar\"]").each(function( index ) {
  jQuery( this ).click();
});

location.reload(true);

在这里,第一个指令得到一个html按钮列表,然后单击()每个按钮(从而启动一个ajax操作)。然后我要重新加载页面。但是在这里,在完成所有ajax click()请求之前重新加载页面。

在重新加载页面之前,等待所有单击ajax exchange的最佳方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-29 10:02:00

您的代码工作如下:

在回调函数中设置的所有内容都将在进程仍在进行时执行。但是,下一句:

代码语言:javascript
复制
location.reload(true);  

(它位于“等待”结果的回调之外)是在jquery语句之后执行的,而不关心该语句是否结束。

一种可能对你有用的解决方案:

代码语言:javascript
复制
var elements=jQuery(":button[attributeFoo=\"bar\"]");
var total=elements.length;

jQuery(elements).each(function( index, elem ) {
  jQuery(elem).click();
  if(index == total-1) 
    location.reload(true);
});

console.log("show before reload")

因此,一旦在回调中处理(单击)了最后一个元素,它就会重新加载页面。请注意,消息“重新加载前显示”将出现在页面刷新之前。

票数 2
EN

Stack Overflow用户

发布于 2018-04-29 10:18:55

您可以尝试在按钮上将所有ajax请求更改为同步,这样直到按钮单击上的ajax请求未完成为止,您的页面将不会重新加载。

票数 0
EN

Stack Overflow用户

发布于 2018-04-29 10:52:03

在这种情况下,

您可以使用服务器检查请求的数量,如果为0,则重新加载页面。

代码语言:javascript
复制
jQuery(":button[attributeFoo=\"bar\"]").each(function( index ) {
    jQuery( this ).click();
});

while(jQuery.active != 0)
{
}

location.reload(true);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50085230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档