2011-01-26 62 views
1

我有一个接口,我可以在标签之间切换,每次我这样做,load()函数被调用并加载一些html到div。清除DOM jquery

问题是,即使我切换到另一个选项卡时,以前的选项卡内容仍保留在DOM中,但我不想那样做,因为我需要重复的ID,它不是最佳的内存使用情况。

所以基本上,问题是,当我切换到另一个选项卡时,如何清理从之前加载的DOM到该div的DOM?

如果我能够命名加载的内容或其他东西,然后从DOM中删除,那将会更好,因为我无法知道内容的加载位置。

+0

你对标签有什么用处? jQuery UI选项卡或另一个插件? – mekwall 2011-01-26 14:06:13

+0

是的,我只用那个 – donkapone 2011-01-26 14:08:13

回答

3

div -element中使用.empty()方法 - 元素包含要移除的html。

如果您不知道是哪个元素,那么必须为选项卡绑定select事件(如果您使用jQuery UI选项卡),以便可以存储当前选定的选项卡,并且还可以知道以前是哪个选项卡选择。

实施例:

var selectedTab; 
$("#tabs").bind("tabsselect", function(event, ui) { 
    if (selectedTab) { 
     selectedTab.find("div").empty(); 
    } 
    selectedTab = ui.panel; 
}); 

也可以通过将匿名功能作为选项结合在舌片构件的创建时以上:

select: function(event, ui) { ... } 
+0

你怎么知道他在使用jQueryUI标签? – jAndy 2011-01-26 13:58:05

0

假设在div容器具有id只是使用删除,如:

$("#id").remove(); 

如果您使用普通JavaSc RIPT:

var tab = document.getElementById("id"); 

if (tab.hasChildNodes()) 
{ 
    while (tab.childNodes.length >= 1) 
    { 
     tab.removeChild(tab.firstChild); 
    } 
} 
1

@Markus Ekwall: 你需要围绕selectedTab.find [...]与jQuery,否则你会得到 “selectedTab不是一个函数”。

$(selectedTab).find("div").empty(); // or jQuery(selectedTab).find("div").empty(); 
1

在选择选择器中,清空先前选择的选项卡。这工作。

$("#tabs").tabs({ select: function(event, ui) { 

    var selectedPanel = $("#tabs div.ui-tabs-panel:not(.ui-tabs-hide)"); 
    $(selectedPanel).empty();