我有一个列表,我只想从中删除所有子节点.使用jquery最有效的方法是什么?这就是我所拥有的:
<ul id='foo'>
<li>a</li>
<li>b</li>
</ul>
var thelist = document.getElementById("foo");
while (thelist.hasChildNodes()){
thelist.removeChild(thelist.lastChild);
}
Run Code Online (Sandbox Code Playgroud)
是否有快捷方式,而不是一次删除一个项目?
-----------编辑----------------
每个列表元素都附加了一些数据,还有一个点击处理程序,如下所示:
$('#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());
}
Run Code Online (Sandbox Code Playgroud)
最终我也可以为每个列表项添加按钮 - 所以它看起来像是empty()是要走的路,以确保没有内存泄漏?
Nic*_*ver 175
$("#foo").empty();
Run Code Online (Sandbox Code Playgroud)
来自文档:
从DOM中删除匹配元素集的所有子节点.
其他用户建议,
.empty()
Run Code Online (Sandbox Code Playgroud)
足够好,因为它删除了所有后代节点(标签节点和文本节点)以及存储在这些节点内的所有类型的数据。请参阅JQuery 的 API 空文档。
如果您希望保留数据,例如事件处理程序,您应该使用
.detach()
Run Code Online (Sandbox Code Playgroud)
方法 .remove() 可用于类似目的。
归档时间: |
|
查看次数: |
112109 次 |
最近记录: |