jQuery 删除元素

有添加就有删除:清理列表、移除过期提示、清空购物车,都离不开 jQuery 的删除方法。核心是 remove() 与 empty():一个"连人带房拆掉",一个"只清空屋里东西"。

先看演示用的 HTML:

<div id="box">
    <p>第一段</p>
    <p class="del">第二段</p>
</div>

remove():删除元素本身

remove() 把选中元素连同其内部所有内容一起从 DOM 中移除:

$("#box").remove();
// 效果:整个 #box(含两个 p)从页面消失

remove() 还支持传入选择器进行过滤,只删符合条件的元素:

$("p").remove(".del");
// 效果:只删除带 class="del" 的第二段,第一段保留

empty():清空内部内容

empty() 删除选中元素的所有子元素和内容,但元素外壳保留:

$("#box").empty();
// 效果:#box 还在页面上,但里面两个 p 都没了,变成一个空盒子

remove() 与 empty() 的区别

方法删什么元素本身典型用途
remove()元素 + 全部内部一并删除彻底移除某块内容
empty()仅内部子元素保留为空壳清空容器待重新填充

一句话记忆:remove 拆房子,empty 清屋子。

detach():移除但保留数据

detach() 与 remove() 相似,但会把元素上绑定的事件和数据保留下来,将来可重新放回页面:

var box = $("#box").detach();  // 移走但记忆还在
$("body").append(box);         // 重新放回后,原来绑定的 click 事件依然有效

适合做"暂存再还原"的场景;remove() 删除的元素无法这样复活。

综合示例:点删除按钮移除当前行

<ul>
    <li>行一 <button class="rm">删除</button></li>
    <li>行二 <button class="rm">删除</button></li>
</ul>
$(".rm").click(function () {
    $(this).parent("li").remove();
    // 效果:点击某行的"删除",该行 li 整行消失
});

小结

删除三兄弟各司其职:remove() 整块移除(可带选择器筛选)、empty() 只清空内部、detach() 移走但保留数据事件。按"要不要留壳、要不要复活"来选,就不会用错。

笔记加载中…