从父级删除所有的子节点?
我有一个列表,我只想从中删除所有的子节点。 什么是最有效的方式使用jQuery? 这是我的:
<ul id='foo'> <li>a</li> <li>b</li> </ul> var thelist = document.getElementById("foo"); while (thelist.hasChildNodes()){ thelist.removeChild(thelist.lastChild); }
是否有一个捷径,而不是一次一个删除每个项目?
———–编辑—————-
每个列表元素都有一些附加的数据,以及一个像这样的点击处理程序:
$('#foo').delegate('li', 'click', function() { alert('hi!'); }); // adds element to the list at runtime function addListElement() { var element = $('<li>hi</hi>'); element.data('grade', new Grade()); }
最后我可能会为每个列表项添加button – 所以看起来像empty()是要走的路,以确保没有内存泄漏?
你可以使用.empty()
,像这样 :
$("#foo").empty();
从文档 :
从DOM中删除所有匹配元素集合中的所有子节点。
其他用户build议,
.empty()
是好的,因为它删除所有后代节点(包括标签节点和文本节点)以及存储在这些节点内的所有types的数据。 查看JQuery的API空白文档 。
如果您希望保留数据,例如事件处理程序,则应使用
.detach()
如JQuery的API分离文档中所述 。
方法.remove()可能用于类似的目的。