jQuery 文档处理:外部插入

🎉摘要:jQuery 文档操作之外部插入:after/insertAfter/before/insertBefore 的用法区别,教你快速实现目标元素前后的兄弟元素插入,附实战代码示例,清晰区分内外插入差异。

jQuery 的外部插入方法用于将内容添加到目标元素的外部(作为同级兄弟元素),核心包含 after/insertAfter、before/insertBefore 四组方法,这类方法是在元素的“旁边”插入(而非内部),下面将用代码示例逐一讲解。

外部插入

after(content|fn)

用于在每个匹配元素的后面(下一个兄弟位置)插入内容。语法:

$(目标元素).after(要插入的内容)

参数:

  • content:HTML 字符串、DOM 元素、jQuery 对象。

  • fn(index, html):回调函数,返回要插入的内容(index是元素索引,html是元素当前的 HTML)。

示例:

<form>
    <p id="row1">ID=row1</p>
</form>
<form>
    <p class="myClass">class=myClass</p>
    <p class="myClass">class=myClass</p>
</form>

运行代码:

$('#row1').after($('.myClass'))

将所有拥有 myClass 类的元素添加到 id 为 row1 元素的后面,效果如下:

<form>
    <p id="row1">ID=row1</p>
    <p class="myClass">class=myClass</p>
    <p class="myClass">class=myClass</p>
</form>
<form></form>

insertAfter(content)

该方法的功能和 after 完全一致(内容插在目标元素后面),但调用主体和目标位置互换(相当于“把内容插到目标后面”)。语法:

$(要插入的内容).insertAfter(目标元素)

示例:

<form>
    <p id="row1">ID=row1</p>
</form>
<form>
    <p class="myClass">class=myClass</p>
    <p class="myClass">class=myClass</p>
</form>

运行代码:

$('#row1').insertAfter($('.myClass'))

将 id 为 row1 的元素添加到所有类为 myClass 元素的后面,效果如下:

<form></form>
<form>
    <p class="myClass">class=myClass</p>
    <p id="row1">ID=row1</p>
    <p class="myClass">class=myClass</p>
    <p id="row1">ID=row1</p>
</form>

before(content|fn)

用于在每个匹配元素的前面(上一个兄弟位置)插入内容。语法:

$(目标元素).before(要插入的内容)

注意,参数 和 after完全一致(content / 回调函数)。

示例:

<form>
    <p id="row1">ID=row1</p>
</form>
<form>
    <p class="myClass">class=myClass</p>
    <p class="myClass">class=myClass</p>
</form>

运行代码:

$('#row1').before($('.myClass'))

将所有类为 myClass 的元素添加到 id 为 row1 元素的前面。效果如下:

<form>
    <p class="myClass">class=myClass</p>
    <p class="myClass">class=myClass</p>
    <p id="row1">ID=row1</p>
</form>
<form></form>

insertBefore(content)

方法的作用和 before 完全一致(内容插在目标元素前面),调用主体和目标位置互换。语法:

$(要插入的内容).insertBefore(目标元素)

示例:

<form>
    <p id="row1">ID=row1</p>
</form>
<form>
    <p class="myClass">class=myClass</p>
    <p class="myClass">class=myClass</p>
</form>

运行代码:

$('#row1').insertBefore($('.myClass'))

将 id 为 row1 的元素插入到所有类为 myClass 元素的前面。效果如下:

<form></form>
<form>
    <p id="row1">ID=row1</p>
    <p class="myClass">class=myClass</p>
    <p id="row1">ID=row1</p>    
    <p class="myClass">class=myClass</p>
</form>

下表将对照前面几个方法进行简单对别,方便记忆:

方法插入位置语法结构
after()目标元素后面目标.after (内容)
insertAfter()目标元素后面内容.insertAfter (目标)
before()目标元素前面目标.before (内容)
insertBefore()目标元素前面内容.insertBefore (目标)

完整示例

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

示例:

<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; }
        form { border:solid 1px blue; box-sizing: border-box; padding: 10px;}
        p { border:solid 1px green; box-sizing: border-box; padding: 10px; }
        /* 效果样式 */
        .myClass {
            box-shadow: inset 0 0 5px red;
        }
    </style>
</head>
<body>

    <div class="app">
        <h3>外部插入</h3>
        <form>
            <p id="row1">ID=row1</p>
        </form>
        <form>
            <p class="myClass">class=myClass</p>
            <p class="myClass">class=myClass</p>
        </form>
    </div>

    <div>
        <!-- after(content|fn) 在每个匹配的元素之后插入内容 -->
        <button type="button" onclick="
                $('#row1').after($('.myClass'));
            ">$('#row1').after($('.myClass'))</button>

        <!-- before(content|fn) 在每个匹配的元素之前插入内容 -->
        <button type="button" onclick="
                $('#row1').before($('.myClass'));
            ">$('#row1').before($('.myClass'))</button>

        <!-- insertAfter(content) 把所有匹配的元素插入到另一个、指定的元素元素集合的后面 -->
        <button type="button" onclick="
                $('#row1').insertAfter($('.myClass'));
            ">$('#row1').insertAfter($('.myClass'))</button>

        <!-- insertBefore(content) 把所有匹配的元素插入到另一个、指定的元素元素集合的前面 -->
         <button type="button" onclick="
                $('#row1').insertBefore($('.myClass'));
            ">$('#row1').insertBefore($('.myClass'))</button>
    </div>
    
</body>
</html>

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

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

  

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