Dijit:关闭多个标签

时间:2012-06-08 13:55:27

标签: dojo

假设我在标签容器中有以下Dijit标签:

tab_1
tab_dave
tab_2
tab_3
...
tab_n

如何关闭tab_dave以外的所有标签?

2 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是循环遍历所有子项,删除没有该特定名称或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]);
    }
}

虽然看起来很慢,但如果有更清洁的方式会很好(所以不要接受我的回答!:)

答案 1 :(得分:2)

使用dojo查询 dojo.query http://dojotoolkit.org/reference-guide/1.10/dojo/query.html

查询元素类型或类名或其他,为

提供第二个参数
dojo.forEach(dojo.query(".tabs", "containerId"), 
    function(closeTab) {
        //doStuff
    }
);

但是,如果有很多标签你可以销毁(递归)整个tabContainer并构建一个只有1个元素的新标签。