好的,因为我没有得到任何回复,所以我选择了第二条路线,这似乎是一个很好的解决方案。
该部分中的脚本使用服务器就地生成的 JSONhead
填充全局可见的数据列表。
然后,在之前定义了 tabs 的地方,我放置了一个脚本来即时生成它们:items
div
<div id="tabs" class="ui-tabs">
<ul class="ui-tabs-nav"></ul>
<script type="text/javascript">
for (var i = 0; i < items.length; i++)
createTab(items[i], i);
</script>
</div>
createTab
函数在单独的 JS 文件中定义,并管理div
以下项目的创建和列表ul
:
function createTab(item, index) {
createPanel(item, index).appendTo($('#tabs'));
createTabItem(index).appendTo($('.ui-tabs-nav'));
}
// creates list item with a href="#tabs-1..n"
function createTabItem(index) {
return $('<li></li>').append(
$('<a></a>').attr('href', '#tabs-' + (index+1))
);
}
// creates a div for tab
function createPanel(item, index) {
var panel = $('<div class="ui-tabs-panel"></div>')
.attr('id', 'tabs-'+ (index+1)); // id = "tabs-1..n"
if (index > 0) panel.addClass('ui-tabs-hide'); // hide all tabs but the first
// whatever you need to fill the tab with
createPicture(item).appendTo(panel);
createDescription(item).appendTo(panel);
return panel;
}
由于所有这些都发生在页面加载之前,我不必更改管理选项卡导航的代码。
当然,这还没有启用预取图像,但使它更容易做到,因为标签创建发生在一个地方,并且变得更容易控制。