Jquery ui 如果单击了其他选项卡,jqueryui ajax选项卡将停止加载

Jquery ui 如果单击了其他选项卡,jqueryui ajax选项卡将停止加载,jquery-ui,Jquery Ui,我有一个jQueryUI选项卡控件,它有两个选项卡。一个是通过ajax加载其内容,是默认选项卡。另一个是一个简单的非ajax选项卡 当用户访问页面时,将显示ajax选项卡。由于加载内容至少需要5-10秒,因此一些用户单击以查看第二个选项卡。此时,当显示第二个选项卡时,ajax调用似乎被取消-选项卡的加载程序消失,单击返回ajax选项卡只显示一个空白div。由于我已关闭缓存,因此选项卡不会重新加载。启用缓存将允许用户至少再次请求数据,但由于这些调用可能需要很长时间,因此这不是一个可行的解决方案 这

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

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

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


这可能吗?

默认行为是在挂起的请求上调用:

但是您可以使用
select
事件处理程序对其进行一些欺骗,并删除对前面XmlHeepRequest的引用,如下所示:

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

这可以工作,因为已触发。

谢谢!我会尝试一下,然后再报告。好吧,这项技术看起来不管用。select事件被正确触发,但我将ajax设置为第一个(默认)选项卡,显然select事件仅在单击选项卡时触发,如果它是默认选项卡,则不会触发。即便如此,当我单击另一个选项卡并返回ajax选项卡时,ajax请求在切换到非ajax选项卡时仍然被中断。因此,即使在默认情况下加载ajax选项卡时触发了select事件,我也不确定该技术是否有效(没有单击它)。我将“$(this.data(“tabs”).xhr=null;”行切换为“delete this.xhr;”,我相信这是可行的。但是,_cleanup函数删除了ajax选项卡的微调器,这使得用户觉得ajax查询已经中止,而实际上没有中止。我想这并不理想,但比以前的行为要好。我将看看是否可以以某种方式覆盖_cleanup的行为,以允许微调器在ajax请求仍挂起时继续执行其微调行为;但是,我发现jquery-ui-1.9.2不允许我在标签加载完成之前激活(选择)标签。简单的解决方法:在jquery代码中注释掉
tab.hasClass(“ui选项卡加载”)|
s.hasClass(“ui选项卡加载”)|
,在最小化代码中注释掉
ui.tabs
小部件的
\u eventHandler
方法。
$("#tabs").tabs('destroy').tabs({
  select: function(event, ui) {
    $(this).data("tabs").xhr = null;
  }
});