我有一个接口,我可以在标签之间切换,每次我这样做,load()函数被调用并加载一些html到div。清除DOM jquery
问题是,即使我切换到另一个选项卡时,以前的选项卡内容仍保留在DOM中,但我不想那样做,因为我需要重复的ID,它不是最佳的内存使用情况。
所以基本上,问题是,当我切换到另一个选项卡时,如何清理从之前加载的DOM到该div的DOM?
如果我能够命名加载的内容或其他东西,然后从DOM中删除,那将会更好,因为我无法知道内容的加载位置。
我有一个接口,我可以在标签之间切换,每次我这样做,load()函数被调用并加载一些html到div。清除DOM jquery
问题是,即使我切换到另一个选项卡时,以前的选项卡内容仍保留在DOM中,但我不想那样做,因为我需要重复的ID,它不是最佳的内存使用情况。
所以基本上,问题是,当我切换到另一个选项卡时,如何清理从之前加载的DOM到该div的DOM?
如果我能够命名加载的内容或其他东西,然后从DOM中删除,那将会更好,因为我无法知道内容的加载位置。
在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) { ... }
你怎么知道他在使用jQueryUI标签? – jAndy 2011-01-26 13:58:05
假设在div容器具有id
只是使用删除,如:
$("#id").remove();
如果您使用普通JavaSc RIPT:
var tab = document.getElementById("id");
if (tab.hasChildNodes())
{
while (tab.childNodes.length >= 1)
{
tab.removeChild(tab.firstChild);
}
}
@Markus Ekwall: 你需要围绕selectedTab.find [...]与jQuery,否则你会得到 “selectedTab不是一个函数”。
$(selectedTab).find("div").empty(); // or jQuery(selectedTab).find("div").empty();
在选择选择器中,清空先前选择的选项卡。这工作。
$("#tabs").tabs({ select: function(event, ui) {
var selectedPanel = $("#tabs div.ui-tabs-panel:not(.ui-tabs-hide)");
$(selectedPanel).empty();
你对标签有什么用处? jQuery UI选项卡或另一个插件? – mekwall 2011-01-26 14:06:13
是的,我只用那个 – donkapone 2011-01-26 14:08:13