这是笔者昨天面试时,面试官提出的问题,笔者只答出了其中一个方面,回来翻阅文档后对自己的答案并不满意。现整理出详细的笔记,供大家参考。
相同点:两个方法都是Jquery中用来删除DOM节点的。
区别:
empty()是移除指定标签内的所有节点,包括文本节点。
remove()是移除指定的当前节点。
如,对如下DOM树:
<body>
<div>this is header<div>
this is main.
<div>this is footer</div>
</body>
执行$("div").empty()后结果为:
<body>
<div><div>
this is main.
<div></div>
</body>
div里的内容被清空了,但是节点还留住DOM树上。
执行$("div").remove()后的结果为:
<body>
this is main.
</body>
完全删除了div节点。
还有一点,那就是remove()支持一个参数:remove([expr]),其中expr为可选项,可填可不填,用来进一步筛选要删除的目标。如:
<body>
<div class="hello">Hello</div>
how are
<div>you?</div>
</body>
执行$("div").remove(".hello")后结果为:
<body>
how are
<div>you?</div>
</body>
感谢阅读!
参考文献:jQuery文档手册