jQuery 文档处理:删除

🎉摘要:本文详细介绍 jQuery 文档删除方法,通过该文可快速掌握 empty()/remove()/detach() 的用法。清晰区分 jQuery 文档操作中清空内容、永久删除、临时删除并保留事件的实现方式。

jQuery 的删除方法用于移除 DOM 中的元素或清空元素内容,主要包含 empty()、remove([expr])、detach([expr]) 三个方法,下面将结合示例详细逐个介绍。

删除方法

empty()

用于清空匹配元素的所有子内容(包括文本、子元素、节点),但保留元素本身(含自身的属性、事件绑定)。语法:

$(目标元素).empty()

示例:

<div class="container">
    <div class="inner inner_row1">Hello</div>
    <div class="inner inner_row2">Goodbye</div>
</div>

运行如下 jQuery 代码:

$('.container').empty();

效果如下:

<div class="container"></div>

remove([expr])

用于从 DOM 中删除匹配的元素本身及所有子内容,且移除元素的所有属性、事件绑定(无法恢复)。语法:

$(目标元素).remove([筛选表达式])

参数:

  • expr:表示可选的选择器,用于筛选要删除的元素(如 $('div').remove('.delete') 仅删除带 .delete 的 div)。

示例:

<div class="container">
    <div class="inner inner_row1">Hello</div>
    <div class="inner inner_row2">Goodbye</div>
</div>

运行如下 jQuery 代码:

$('div').remove('.inner_row1');

效果如下:

<div class="container">
    <div class="inner inner_row2">Goodbye</div>
</div>

detach([expr])

用于从 DOM 中删除匹配的元素本身及所有子内容,但保留元素的属性、事件绑定(可重新插入 DOM 恢复)。语法:

$(目标元素).detach([筛选表达式])

参数:

  • expr:表示可选的选择器,用于筛选要删除的元素(如 $('div').remove('.delete') 仅删除带 .delete 的 div)。

示例:删除后重新插入,保留事件

<div class="container">
    <div class="inner inner_row1">Hello</div>
    <div class="inner inner_row2" onclick="alert('Goodbye')">Goodbye</div>
</div>

运行如下 jQuery 代码:

// 删除 class 为 inner_row2 的元素,但不从jQuery对象中移除
var innerRow2 = $('.inner_row2');
// 删除
innerRow2.detach();
// 3秒钟后恢复
setTimeout(function() {
    innerRow2.appendTo('.container');
}, 3000);

下面通过表格对别上面各个方法的区别:

方法操作对象是否保留自身是否保留事件 / 属性能否恢复适用场景
empty()元素内部内容保留保留-清空输入框、重置容器内容
remove()元素本身 + 内部内容删除移除不能永久删除元素,无需复用
detach()元素本身 + 内部内容删除保留可以临时移除元素,后续需复用

完整示例

下面示例通过“点击自己动手试一试”可以尝试各种方法的效果:

示例:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JQeury 教程</title>
    <!-- 引入 jQuery 库 -->
    <script type="text/javascript" src="https://www.hxstrive.com/cdn/libs/jquery/3.7.1/jquery.min.js"></script>
    <!-- 引入 loglevel 库,方便在 DOM 中打印日志 -->
    <script src="https://www.hxstrive.com/preview_code/libs/custom_loglevel.js"></script>
    <style>
        button { background: #EEE !important; border: 1px solid #ccc !important; 
            min-width: 40px; padding: 5px; margin: 5px; cursor: pointer; }
        h3 { font-size: 18px; }
        .container { border: 1px solid blue; padding: 10px; }
        .inner { border: 1px solid red; padding: 10px; margin: 5px; }
    </style>
</head>
<body>

    <div class="app">
        <h3>删除</h3>
        <div class="container">
            <div class="inner inner_row1">Hello</div>
            <div class="inner inner_row2" onclick="alert('Goodbye')">Goodbye</div>
        </div>
    </div>

    <div id="message"></div>

    <div>
        <!-- empty() 删除匹配的元素集合中所有的子节点 -->
        <button type="button" onclick="
                // 删除 class 为 container 的元素中的所有子节点
                $('.container').empty();
            ">$('.container').empty()</button>

        <!-- remove([expr]) 从DOM中删除所有匹配的元素 -->
        <button type="button" onclick="
                // 删除 class 为 inner_row1 的元素
                $('div').remove('.inner_row1');
            ">$('div').remove('.inner_row1')</button>

        <!-- detach([expr]) 从DOM中删除所有匹配的元素,不会把匹配的元素从jQuery对象中删除 -->
         <button type="button" onclick="
                // 删除 class 为 inner_row2 的元素,但不从jQuery对象中移除
                var innerRow2 = $('.inner_row2');
                // 删除
                innerRow2.detach();
                // 3秒钟后恢复
                setTimeout(function() {
                    innerRow2.appendTo('.container');
                }, 3000);
            ">detach([expr])</button>
    </div>
    
</body>
</html>

看看效果👉自己动手试一试 »

更多关于 jQuery 的知识请阅读后续教程。

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号