假设我在选项卡容器中有以下 Dijit 选项卡:
tab_1
tab_dave
tab_2
tab_3
...
tab_n
我怎么能关闭除 之外的所有选项卡tab_dave
?
一种方法是遍历所有子节点,删除没有特定名称或 ID 的子节点。
function closeAllBut(containerId, tabId)
{
var tc = dijit.byId(containerId),
tabs = tc.getChildren();
for(var i = 0; i < tabs.length; i++)
{
if(tabs[i].id != tabId) tc.removeChild(tabs[i]);
}
}
不过看起来很慢,如果有更清洁的方法会很好(所以不要接受我的回答!:))
使用 dojo 检查dojo.query http://dojotoolkit.org/reference-guide/1.10/dojo/query.html查询
查询元素类型或类名等,提供第二个参数
dojo.forEach(dojo.query(".tabs", "containerId"),
function(closeTab) {
//doStuff
}
);
但是,如果有很多选项卡,您可以销毁(递归)整个 tabContainer 并构建一个只有 1 个元素的新选项卡。