如果单击其他选项卡,jquery ajax选项卡将停止加载

时间:2010-08-16 16:07:28

标签: jquery-ui

我有一个jQueryUI选项卡控件设置,有两个选项卡。一个通过ajax加载其内容,并且是默认选项卡。另一个是简单的非ajax标签。

当用户访问该页面时,会显示ajax选项卡。由于内容加载至少需要5-10秒,因此某些用户单击以查看第二个选项卡。此时,当显示第二个选项卡时,似乎取消了ajax调用 - 选项卡的加载程序消失,单击返回ajax选项卡只显示一个空白div。由于我关闭了缓存,因此选项卡不会重新加载。打开缓存将允许用户至少再次请求数据,但由于这些调用可能需要很长时间,因此这不是一个可行的解决方案。

在这种情况下,理想的行为是ajax选项卡可以继续保持其请求打开,即使单击其他选项卡也是如此。

这可能吗?

1 个答案:

答案 0 :(得分:1)

默认行为是在待处理请求.abort()上调用you can see it in the source here

if ( this.xhr ) {
  this.xhr.abort();
  delete this.xhr;
}

但你可以稍微欺骗它并使用select事件处理程序删除对前一个XmlHeepRequest的引用,如下所示:

$("#tabs").tabs('destroy').tabs({
  select: function(event, ui) {
    $(this).data("tabs").xhr = null;
  }
});

这是有效的,因为select event handler已被触发before that .abort() call when selecting