繁体   English   中英

缓存JQuery UI-Tabs Ajax加载的内容?

[英]Cache JQuery UI-Tabs Ajax loaded Content?

我使用JQuery UI Tabs 我所做的是使用Ajax加载每个选项卡的内容,如下所示: http//jqueryui.com/tabs/#ajax

问题:如果用户单击选项卡A,然后再单击选项卡B,然后再单击选项卡A,则选项卡A的内容将加载两次。

是否可以缓存JQuery UI选项卡的内容?

尝试使用beforeLoad事件:

$(".selector").tabs({
    beforeLoad: function(event, ui) {
        // if the target panel is empty, return true
        return ui.panel.html() == "";
    }
});

beforeLoad(event,ui)

在beforeActivate事件之后,在即将加载远程选项卡时触发。 可以取消以防止标签面板加载内容; 虽然该面板仍将被激活。 在发出Ajax请求之前触发此事件,因此可以对ui.jqXHR和ui.ajaxSettings进行修改。

注意:尽管提供了ui.ajaxSettings并且可以对其进行修改,但jQuery已经处理了其中一些设置。 例如,已应用预过滤器,已处理数据,并已确定类型。 beforeLoad事件同时发生,因此具有与jQuery.ajax()的beforeSend回调相同的限制。

我之前遇到过这种情况。

将时间戳添加到服务器端URL。 这样,每次重新加载页面并联系服务器时,都会有一个新的时间戳。 但是当你在客户端点击时,IE不重新加载url,因为它是相同的,只有页面上的更改重新加载/导航和返回。

PHP:

$time = time();
$tabs = "<div id='tabs'>
<ul>
<li><a href='Home.php?viewIsActive=true&tab=true&timeStamp=" . $time . "'> Active </a></li>
<li><a href='Home.php?listAll=true&tab=true&timeStamp=" . $time . "'> List All </a>    </li>
</ul>
</div>"

因此,对于每页刷新/导航只需要加载一次的ajax请求,请使用服务器端时间戳。

$(function () {
    $("#tabs").tabs({
        beforeLoad: function (event, ui) {
            if (ui.tab.data("loaded")) {
                event.preventDefault();
                return;
            }
            //ui.ajaxSettings.cache = false,
            ui.panel.html('<img src="images/loader.gif" width="24" height="24" style="vertical-align:middle;"> Loading...'),
            ui.jqXHR.success(function() {
                ui.tab.data( "loaded", true );
            }),
            ui.jqXHR.error(function () {
                ui.panel.html(
                "Please Reload Page or Try Again Later.");
            });
        }
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM