jQuery 创建和从插入DOM元素包裹、复制、删除、替换

本文深入讲解了使用jQuery进行DOM元素的创建、插入、复制、删除和替换等操作,包括append、prepend、before、after、wrap、wrapAll、wrapInner、clone、remove、detach、empty、replaceWith和replaceAll等方法的应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题1,创建和从插入DOM元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./node_modules/jquery/dist/jquery.js"></script>
    <style>
        .div1{
            background-color: blue;
        }
        div{
            background-color: red;
        }
    </style>
</head>
<body>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <script>

        // 给父容器中插入内容
        // append  appendTo  插入在父容器的尾部
        // prepend prependTo  插入在父容器的头部


    //    $("body").append("<div></div>");
    // var div= $("<div></div>");
    // $("body").append(div);

    // $("<div></div>").appendTo("body").width(50).height(50)
    // .css({
    //     position:'absolute',
    //     left:0,
    //     top:0
    // }).click(function(){
    //     $(this).css({
    //         left:this.offsetLeft+10
    //     })
    // }).hover(function(){
    //     $(this).toggleClass("div1");
    // })
       

    // $("<div></div>").prependTo("body").width(50).height(50);//insertBefore 插入在最前面

    // $("body").prepend("<div></div>");


    // var city=["北京","上海","广州","深圳","武汉"];
//    var ul=$("<ul></ul>").appendTo("body")
//     $.each(city,function(index,item){
//         ul.prepend(`<li>${item}</li>`);
//     })

        // $("div").append(function(index,item){
        //     return `<a href='#'>${city[index]}</a>`
        // })




            // 同级兄弟元素的插入
            // before(目标在后)  insertBefore(目标在前) 插入在指定元素的前面
            // after  insertAfter 插入在指定元素的后面

        // $("div").eq(1).before("<a></a>");
        // $("div").eq(1).after("<a></a>");


        // $("<a></a>").insertBefore("div:eq(1)");
        // $('<a></a>').insertAfter("div:eq(1)");

        
    </script>
</body>
</html>

标题2、包裹

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./node_modules/jquery/dist/jquery.js"></script>
</head>
<body>
    <span>网易</span>
    <span>淘宝</span>
    <span>京东</span>
    <span>百度</span>
    <script>
        // 在每个元素的外层添加一个标签包裹这个元素
        // $("div").wrap("<a></a>")
        var arr=["www.163.com","www.taobao.com","www.jd.com","www.baidu.com"];
        // $("span").wrap(function(index,item){
        //     return `<a href='${arr[index]}'></a>`;
        // });

        // 删除包裹
        // $("span").unwrap();

        //将指定的所有标签挪移在一个新的标签容器中
        // $("span").wrapAll("<div></div>");

// 将元素的子元素或者内容外包裹一层标签
        // $("span").wrapInner(function(index,item){
        //     return `<a href='${arr[index]}'></a>`;
        // })
    </script>
</body>
</html>

标题3、复制、删除、替换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./node_modules/jquery/dist/jquery.js"></script>
</head>
<body>
        <script>
            // clone(true);true 将元素的事件也复制,false 不复制事件
            // $("<div><a></a></div>").css({
            //     width:50,
            //     height:50,
            //     backgroundColor:"red"
            // }).appendTo("body")
            // .attr("abc","123")
            // .click(function(){
            //     $(this).css("backgroundColor","blue");
            // }).clone(true).appendTo("body");



            // remove
           var div=$("<div><a></a></div>").css({
                width:50,
                height:50,
                backgroundColor:"red"
            }).appendTo("body")
            .attr("abc","123")
            .click(function(){
                $(this).css("backgroundColor","blue");
                // $(this).remove();
                // $(this).detach();
            }).empty();

            // 如果使用remove,及时事件没有删除,remove也会将当前jQuery对象的事件删除
            // 如果使用detach,仅删除元素,不删除事件,如果该对象重新加在页面原事件还会保留
            // empty 删除jQuery对象的子元素或者内容
            $(document).click(function(){
                $("body").append(div);
            })


            // 要替换的内容.replaceWith(替换后的目标);
            // div.replaceWith("<ul><li></li></ul>")
            // 替换后的目标.replaceAll(要替换的内容)
            // $("<ul><li></li></ul>").replaceAll(div);
        </script>
</body>
</html>
<think>嗯,用户想了解如何使用jQuery创建节点插入节点,以及相关的介绍。首先,我需要回忆jQuery中关于元素创建插入的方法。记得jQuery可以通过直接传入HTML字符串来创建元素,比如$('<div>')这样的形式。然后插入节点的话,方法有很多,比如append、prepend、after、before这些,还有appendTo、insertAfter等等。可能需要分别解释每个方法的作用区别。 接下来,用户可能需要具体的例子来理解每个方法的用法。比如,append()是在元素内部的末尾插入内容,而prepend()则是在内部的开头。after()before()则是在元素部,之后或之前插入。需要确保例子简单明了,让用户容易理解。 另,用户可能分不清创建节点插入节点的步骤,需要明确分开讲解。首先介绍如何用jQuery创建元素,比如创建段落、列表项等。然后再详细说明如何将这些创建好的节点插入DOM的不同位置。 还要注意语法是否正确,比如使用$()包裹HTML字符串,以及方法调用的正确顺序。比如appendToappend的区别在于链式调用的对象不同,可能需要用例子说明。 考虑到用户可能是初学者,应该避免使用过于复杂的术语,用通俗易懂的语言解释。同时,结构要清晰,分步骤说明,先讲创建,再讲插入,每个插入方法单独一个小节,并配上示例代码说明。 另,需要提醒用户注意性能问题,比如在循环中频繁操作DOM可能会影响性能,建议使用文档片段或者集中操作。这点可能对用户后续开发有帮助,避免常见错误。 最后,检查是否有遗漏的方法,比如html()text()也可以用来插入内容,但可能不是用户问题的主要关注点,可以简要提及或者作为补充说明。确保覆盖主要的创建插入方法,满足用户的基本需求。</think>以下为jQuery创建节点插入节点的详细说明: 一、创建节点 1. 基础语法 使用`$()`包裹HTML字符串即可创建元素: ```javascript // 创建段落 var $newP = $('<p>这是一个新段落</p>'); // 创建带属性的div var $newDiv = $('<div class="box" id="newBox"></div>'); // 创建列表项 var $li = $('<li>').text('列表项内容').addClass('active'); ``` 二、插入节点 (一)内部插入 1. append() ➔ 插入到目标元素内部末尾 ```javascript // 在#container内末尾插入 $('#container').append($newDiv); // 链式创建插入 $('<span>').text('尾部内容').appendTo('#container'); ``` 2. prepend() ➔ 插入到目标元素内部开头 ```javascript // 在ul开头插入新列表项 $('ul').prepend($('<li>第一个项</li>')); // 反向写法 $('<li>新首项</li>').prependTo('ul'); ``` (二)插入 1. after() ➔ 在目标元素之后插入 ```javascript // 在#box后插入分隔线 $('#box').after('<hr>'); ``` 2. before() ➔ 在目标元素之前插入 ```javascript // 在标题前插入图标 $('h1').before('<img src="icon.png">'); ``` 三、注意事项 1. 性能优化:批量操作建议先创建文档片段 ```javascript var fragment = document.createDocumentFragment(); for(let i=0; i<100; i++){ $(fragment).append($('<div>').text('Item '+i)); } $('#container').append(fragment); ``` 2. 动态元素建议在创建时直接绑定事件 ```javascript $('<button>') .text('点击我') .on('click', function(){ alert('按钮被点击!'); }) .appendTo('body'); ``` 3. 内容替换方法 ```javascript // 清空并替换内容 $('#content').html('<b>新内容</b>'); // 仅替换文本 $('#msg').text('更新后的信息'); ``` 四、选择器优化技巧 插入时尽量指定具体容器: ```javascript // 不推荐(在全文档查找) $('body').append(newElement); // 推荐(直接通过ID定位) $('#specificContainer').append(newElement); ``` 通过组合使用这些方法,可以实现各种DOM操作需求。建议根据具体场景选择最合适的方法,注意保持代码可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值