【发布时间】:2013-01-20 02:10:26
【问题描述】:
根据 jquery-ui 1.9 标签的升级指南 - http://jqueryui.com/upgrade-guide/1.9/#deprecated-add-and-remove-methods-and-events-use-refresh-method - 动态添加新标签时,您只需执行以下操作:
HTML:
<div id='tabs'>
<ul>
<li><a href='#tab1'>#1</a></li>
</ul>
<div id='tab1'></div>
</div>
<button id='add-tab'>Add tab</button>
JavaScript:
$(document).ready(function() {
$("div#tabs").tabs();
$("button#add-tab").click(function() {
var num_tabs = $("div#tabs ul li").length + 1;
$("div#tabs ul").append(
"<li><a href='#tab" + num_tabs + "'>#" + num_tabs + "</a></li>"
);
$("div#tabs").tabs("refresh");
});
});
但是,当我尝试在新创建的选项卡之间进行更改时,我在 firebug 中收到以下错误:
jQuery UI 选项卡:片段标识符不匹配。
如果我理解正确,这个错误意味着没有创建实际的选项卡面板(因此导航面板和选项卡面板之间存在不匹配)。但是升级指南没有提到创建标签面板。
所以我假设我做错了,或者升级指南不完整。请澄清。
有趣的是,在删除选项卡时,升级指南说您必须从导航面板和选项卡面板中显式删除列表项,所以我想知道添加选项卡是否同样适用。
【问题讨论】:
-
将您的确切代码复制粘贴到 jsFiddle 中,它可以正常工作。 jsfiddle.net/rMGCM你确定这就是你所做的一切吗?
-
谢谢克里皮。您是否尝试在选项卡之间进行更改?如果这样做,您将看到不匹配错误。唯一修复它的是添加: $("div#tabs").append("Tab " + num_tabs + "");但这在文档中没有提到。
-
官方指南以及如何在 JQuery UI 中动态添加和删除选项卡的来源:jqueryui.com/tabs/#manipulation