我使用JQuery UI Tabs。我的做法是按照这里建议的,使用Ajax加载每个选项卡的内容:http://jqueryui.com/tabs/#ajax
问题:如果用户依次点击选项卡A、B,然后再次点击选项卡A,则会加载选项卡A的内容两次。
是否可能缓存JQuery UI选项卡的内容?
$(".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 回调同时发生,因此具有相同的限制。
true
表示选项卡内容尚未加载,可以继续进行。返回 false
表示显示选项卡内容但不尝试加载内容。 - hunter$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>"
$(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.");
});
}
});
});
GET
请求。 - Murali Murugesan