我有一个jQueryUI选项卡控件设置,有两个选项卡。一个通过ajax加载其内容,并且是默认选项卡。另一个是简单的非ajax标签。
当用户访问该页面时,会显示ajax选项卡。由于内容加载至少需要5-10秒,因此某些用户单击以查看第二个选项卡。此时,当显示第二个选项卡时,似乎取消了ajax调用 - 选项卡的加载程序消失,单击返回ajax选项卡只显示一个空白div。由于我关闭了缓存,因此选项卡不会重新加载。打开缓存将允许用户至少再次请求数据,但由于这些调用可能需要很长时间,因此这不是一个可行的解决方案。
在这种情况下,理想的行为是ajax选项卡可以继续保持其请求打开,即使单击其他选项卡也是如此。
这可能吗?
答案 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。