【技术分享】WEB前端全栈成长计划(二阶段)-jQuery之DOM进阶篇(1)

举报
Zhoubo 发表于 2020/08/06 17:33:37 2020/08/06
【摘要】 本篇将分享jQuery对DOM文档的一些进阶操作,如何操作DOM文档中元素的添加和删除。

jQuery入门篇中我们了解了jQuery的基本使用,对jQuery语法、选择器、入口函数、鼠标事件以DOM文档获取与设置等基本操作,对DOM文档操作而言,获取和设置是较为基础的,如果对一个已经存在的DOM文档中的<ul><li>进行调整节点内容,直接通过获取和设置这两个方法操作DOM还是很不方便的。

本篇将分享jQueryDOM文档的一些进阶操作,如何操作DOM文档中元素的添加和删除。


一、添加元素

JQuery中提供了四方法添加元素

  • append() 在元素内部结尾插入

  • prepend() 在元素开内部头插入

  • after() 在元素之后

  • before() 在元素之前插入



知识点

  • append()perend() 是在被选中元素内部开头或结尾插入新元素

  • after()before() 是在选被中元素之前或之后插入新元素


append prepend 是在被选中元素内部开头或结尾插入新元素

        <ul id="ul1">
            <li>电脑</li>
            <li>手机</li>
            <li>平板</li>
            <li>服务器</li>
        </ul>
        <button id="btn1">append 结尾插入</button>
        <button id="btn2">prepend 开头插入</button>
        <script>
            // 操作ul列表
            $("#btn1").click(function(){
                $("#ul1").append("<li style='color:red;'>新增元素-由append()添加</li>");
            });
            $("#btn2").click(function(){
                $("#ul1").prepend("<li style='color:red;'>新增元素-由prepend()添加</li>");
            });
        </script>


 

 

        <p id="p1" >我是一个无情的文本</p>
        <button id="btn3">append 结尾插入</button>
        <button id="btn4">prepend 开头插入</button>
 
        <script>
            // 操作p元素
            $("#btn3").click(function(){
                $("#p1").append(",是的");
            });
            $("#btn4").click(function(){
                $("#p1").prepend("如你希望的?");
            });
        </script>


 

 

通过append prepend body 批量添加元素

        <button id="btn5">body.append()</button>
        <button id="btn6">body.prepend()</button>
 
        <script>
            // 批量添加元素
            // 这些元素可以通过text/HTML、JavaScript或jQuery/DOM来创建,最后通过append()和prepend()把这些新元素追加到DOM文档中
            var p1 = "<p>我是第一段,html标签创建的</p>";
            var p2 = document.createElement("p");
            p2.innerHTML="我是第二段,js原生创建的";
            var p3 = $("<p></p>").text("我是第三段,jQuery创建的");
            var p4 = "<p>我是第四段,html标签创建的</p>";
            var p5 = "<p>我是第五段,html标签创建的</p>";
            var p6 = "<p>我是第六段,html标签创建的</p>";
 
            $("#btn5").click(function(){    
                $("body").append(p1,p2,p3); // 可以接收单个或多个新元素,用逗号分隔,不限数量
            });
            $("#btn6").click(function(){    
                $("body").prepend([p1,p2,p3],[p4,p5,p6]); //也可以接收列表,用逗号分隔,不限数量
            });
        </script>


 

 

after before 是在被选中元素之前或之后插入新元素

        <span id="span1" style="color:red;" >我是第二名_p标签</span></br>
        <button id="btn7">after()元素之后插入新元素</button>
        <button id="btn8">before()元素之前插入新元素</button>
        <script>
            $("#btn7").click(function(){
                $("#span1").after("<b> -- 我是第三名_b标签</b>");
            });
            $("#btn8").click(function(){
                $("#span1").before("<i>我是第一名_i标签 -- </i>");
            });
        </script>


 

 

向被选中元素 之前或之后 批量添加元素

        <p id="p2" style="color:red;">我就是那个被选中的</p>
        <button id="btn9">after()元素之后批量插入新元素</button>
        <button id="btn10">before()元素之前批量插入新元素</button>
        <script>
            // 批量添加元素
            // 这些元素可以通过text/HTML、JavaScript或jQuery/DOM来创建,最后通过append()和prepend()把这些新元素追加到DOM文档中
            var p1 = "<p>我是第一段,html标签创建的</p>";
            var p2 = document.createElement("p");
            p2.innerHTML="我是第二段,js原生创建的";
            var p3 = $("<p></p>").text("我是第三段,jQuery创建的");
            $("#btn9").click(function(){    
                $("#p2").after(p1,p2,p3);
            });
            $("#btn10").click(function(){    
                $("#p2").before(p1,p2,p3);
            });
        </script>


 

 

二、删除元素

jQuery中提供了两个方法删除元素

  • remove() 删除被选中的元素(含所有子元素)

  • empty() 从被选的元素中删除子元素


知识点

  • remove() 方法可以接受一个参数,允许筛选指定的元素进行删除(通过选择器),但一定要注意它只能作用于同级,不能直接作用于子元素

  • $(选择符) 语法返回结果是一个元素列表,而被选中元素中如果有子元素是不包含在这个列表中的,所以当你remove(子元素)时因为列表中没有包含子元素所以删除是无效的,也是为什么remove()只能用于同级元素筛选删除的原因。


remove
empty 进行元素删除

        <p>empty()从被选的元素中删除子元素</p>
        <div id="div1" style="width:200px;height:200px;background-color:red;">
            <p>我是老大</p>
            <p class="p2">我是老二(class=p2)</p>
            <p class="p2">我是老三(class=p2)</p>
            <p>我是老四</p>
            <p>我是老五</p>
        </div></br>
        <button id="btn11">remove() 删除div元素(含子元素)</button>
        <button id="btn12">empty() 删除div中子元素</button></br></br>
        <button id="btn13">remove(".p2") 希望删除div中class=p2的子元素(但无法删除)</button></br></br>
        <button id="btn14">通过选中所有p元素,删除class=p2的元素,变相实现删除</button>
 
        <script>
            $("#btn11").click(function(){
                $("#div1").remove();
            });
            $("#btn12").click(function(){
                $("#div1").empty();
            });
            $("#btn13").click(function(){
                $("#div1").remove(".p2");
            });
            $("#btn14").click(function(){
                $("p").remove(".p2");
            });
        </script>


 

    

实例代码已上传我的Gitee有需要的可以去下载

https://gitee.com/net_master/Ajax_Node/tree/master/jQuery

 

写给自己:通过对jQuery的学习可以帮助我们快速的熟悉js操作DOM文档的各类基础,函数库和框架对我们而以仅仅都只是工具而以,能够熟练掌握常见的运用,但手册内容还是要粗略的过一遍让自己产生一些印象,等需要使用的时候可以翻查手册,一定不要徘徊在同一个节点上,要一直向前,切不可钻牛角尖。


 

书山有路勤为径,学海无涯苦作舟!!!

 

zhoubo

 

2020.8.6 at Great 108

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。