通过ajax在新浏览器选项卡中打开JQuery UI选项卡将直接显示ajax响应的HTML

时间:2013-10-08 15:02:54

标签: javascript jquery ajax jquery-ui jquery-ui-tabs

我目前正在从JQuery UI 1.8.14升级到JQuery UI 1.10。

使用v1.8.14代码,使用新的浏览器选项卡打开选项卡将重新加载整个页面,这将激活默认选项卡(即tabIndex = 0)

我遇到了有关JQuery UI标签的问题,并在新的浏览器标签/窗口中打开了标签。 在我的页面上,右键单击选项卡并选择“在新选项卡中打开链接”。标签内容将通过ajax加载

问题是新页面将直接显示ajax响应的HTML,没有CSS样式,JavaScript或任何东西。

这显然是JQuery UI团队的设计变更。见以下链接: http://bugs.jqueryui.com/ticket/9363

这在我看来是个常见问题,但我无法找到任何解决方案。 有关变通方法或修复的任何建议吗?

演示此问题的一个非常好的示例是JQuery UI Tabs Demo页面: http://jqueryui.com/tabs/

右键单击任何标签,然后选择“在新标签页中打开链接”。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在beforeActivate事件中,对于每个选项卡,将href存储为数据对象,然后将href设置为aria-controls。

    $(ui.newTab).parent().find("li a").eq(i).data("href.tabs",$(ui.newTab).parent().find("li a").eq(i).attr('href'));
    $(ui.newTab).parent().find("li a").eq(i).attr('href', '#'+$(ui.newTab).parent().find("li").eq(i).attr('aria-controls'));

在activate事件中,对于每个选项卡,将数据对象中的值设置为href。

    $(ui.newTab).parent().find("li a").eq(i).attr('href', $(ui.newTab).parent().find('a').eq(i).data("href.tabs"));