zoukankan      html  css  js  c++  java
  • 使用jQuery操作DOM

    使用jQuery操作DOM

    jQuery对JavaScript中的DOM操作进行了封装,可分为:

    • l  样式操作
    • l  内容及Value属性值操作
    • l  节点操作
    • l  节点属性操作
    • l  节点遍历
    • l  CSS-DOM操作

    一、直接设置样式值

    1. 使用css()为指定的元素设置样式值css(name,value) 或css({name:value, name:value,name:value…})

    例如:

    $(this).css("border","5px solid #f5f5f5");或$(this).css({"border":"5px solid #f5f5f5","opacity":"0.5"});

    案例:使用css()添加边框效果

    <!DOCTYPE html>

    <html>

      <head>

        <title>使用css()添加边框效果.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

       <script type="text/javascript">

          $(function(){

             $("div").css("border","5px solid green");

          });

       </script>

      </head>

      <body>

      <div>

          This is my HTML page. <br>

        </div>

      </body>

    </html>

    1. 追加和移除样式

    追加:addClass(class)或addClass(class1 class2 … classN)

    移除:removeClass(“style2 ”)或removeClass("style1 style2 ")

    切换样式:toggleClass(class)模拟了addClass()与removeClass()实现样式切换的过程

    <!DOCTYPE html>

    <html>

      <head>

        <title>追加和移除样式.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <style type="text/css">

          .a{

             background:red

          }

       </style>

       <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

       <script type="text/javascript">

          $(function(){

    //           $("#btn1").click(function(){

                   $("#div1").addClass("a");

               });

               $("#btn2").click(function(){

                   $("#div1").removeClass("a");

               });

               //切换样式

               $("#btn3").click(function(){

                   $("#div1").toggleClass("a");

               });

          });

       </script>

      </head>

      <body>

        <button id="btn1">btn1</button>

        <button id="btn2">btn2</button>

        <button id="btn3">btn3</button>

        <div id="div1" style="100px;height:100px;border:1px solid black"></div>

      </body>

    </html>

    二、内容及Value属性值操作

    • ü  html()可以对HTML代码进行操作,类似于JS中的innerHTML

    $("div.left").html();//获取元素中的html代码

    $("div.left").html("<div class='content'>…</div>");//设置元素中的html代码

    • ü  text()可以获取或设置元素的文本内容

    $("div.left").text();//获取元素中的文本内容

    $("div.left").text("<div class='content'>…</div>");//设置元素中的文本内容

    • ü  val()可以获取或设置元素的value属性值

    $(this).val();

    $(this).val("");

    html()和text()的区别:

    语法

    参数

    功能

    html()

    无参数

    用于获取第一个匹配元素的HTML内容或文本内容

    html(content)

    content参数为元素的HTML内容

    用于设置所有匹配元素的HTML内容或文本内容

    text()

    无参数

    用于获取所有匹配元素的文本内容

    text (content)

    content参数为元素的文本内容

    用于设置所有匹配元素的文本内容

    案例:

    <!DOCTYPE html>

    <html>

      <head>

        <title>内容及Value属性值操作.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

       <script type="text/javascript">

          $(function(){

    //       alert($("div").html());

    //       alert($("div").text());

             $("button").click(function(){

    //          $("div").html("<button>click</button>");

    //          $("div").text("<button>click</button>");

             });

    //       alert($("input").val());

    //       $("input").val("ddddddd");

          });

       </script>

      </head>

      <body>

        <div style="200px;height:200px;border:1px solid black">

           <button>btn</button>

           <input type="text" value="aaaaaa">

        </div>

      </body>

    </html>

    第一节两个案例:

    当鼠标移过某个目录时,该条目颜色加深,字体颜色变为白色,鼠标移出时,恢复初始状态

    <!DOCTYPE html>

    <html>

      <head>

        <title>根据鼠标移动变更菜单样式.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <style type="text/css">

            .a{

                background:blue;

                color:white

            }

        </style>

        <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

        <script type="text/javascript">

            $(function(){

                $("li").mouseover(function(){

                    $(this).toggleClass("a");

                });

                $("li").mouseout(function(){

                    $(this).toggleClass("a");

                });

            });

        </script>

      </head>

      <body>

        <p>新手上路</p>

        <ul>

            <li>注册登录</li>

            <li>易付宝账号激活</li>

            <li>易付宝实名认证</li>

            <li>密码相关</li>

            <li>会员购买</li>

        </ul>

      </body>

    </html>

    当文本框获得焦点时,文本框内默认文字消失,失去焦点时,文本框内提示文字再次出现

    <!DOCTYPE html>

    <html>

      <head>

        <title>文本框获得焦点变化.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

        <script type="text/javascript">

            $(function(){//on() 方法在被选元素及子元素上添加一个或多个事件处理程序

                $("#id").on("blur", function(){//失去焦点

                    $(this).val("请输入密码");

                }).on("focus", function(){//获得焦点

                    $(this).val("");

                });

            });

        </script>

      </head>

      <body>

        <input type="text" id="id" value="请输入密码">

      </body>

    </html>

    升级版

    <!DOCTYPE html>

    <html>

      <head>

        <title>文本框获得焦点变化.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

        <style type="text/css">

           .a{

               opacity:0.5;

           }

        </style>

        <script type="text/javascript">

            $(function(){

                $("#input").on("focus",function(){//获得焦点

                    $(this).removeClass("a");

                    if($(this).val()==null || $(this).val()=="" || $(this).val()=="please input password"){

                        $(this).val("");

                    }else{

                        $(this).select();

                    }

                }).on("blur",function(){//失去焦点

                    if($(this).val()==null || $(this).val()=="" || $(this).val()=="please input password"){

                        $(this).val("please input password");

                        $(this).addClass("a");

                    }else{

                        $(this).removeClass("a");

                    }

                });

               

            });

        </script>

      </head>

      <body>

        请输入密码:<input type="text" id="input" value="please input password" class="a">

      </body>

    </html>

     

    三、节点操作

    ü  查找节点(前面章节已讲)

    ü  创建节点

    var $newNode=$("<li title='标题为千与千寻'>千与千寻</li>");

    ü  插入节点

    元素内部插入子节点

    语法

    功能

    append(content)

    $(A).append(B)表示将B追加到A中。如:$("ul").append($newNode1);

    appendTo(content)

    $(A).appendTo(B)表示把A追加到B中。如:$newNode1.appendTo("ul");

    prepend(content)

    $(A). prepend (B)表示将B前置插入到A中。如:$("ul"). prepend ($newNode1);

    prependTo(content)

    $(A). prependTo (B)表示将A前置插入到B中。如:$newNode1. prependTo ("ul");

    元素外部插入同辈节点

    语法

    功能

    after(content)

    $(A).after (B)表示将B插入到A之后。如:$("ul").after($newNode1);

    insertAfter(content)

    $(A). insertAfter (B)表示将A插入到B之后。如:$newNode1.insertAfter("ul");

    before(content)

    $(A). before (B)表示将B插入至A之前。如:$("ul").before($newNode1);

    insertBefore(content)

    $(A). insertBefore (B)表示将A插入到B之前。如:$newNode1.insertBefore("ul");

    ü  替换节点

    $("ul li:eq(1)").replaceWith($newNode1);

    $newNode1.replaceAll("ul li:eq(1)");

    ü  复制节点

    $("ul li:eq(1)").clone(true).appendTo("ul");

    ü  删除节点

    jQuery提供了三种删除节点的方法

    remove():删除整个节点

    detach():删除整个节点,保留元素的绑定事件、附加的数据

    empty():清空节点内容

     

    案例:

    <!DOCTYPE html>

    <html>

      <head>

        <title>节点元素操作.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

        <script type="text/javascript">

            $(function(){

                //创建节点

                var $newNode=$("<li>你的名字</li>");

               

                //插入子节点

                /*$("ul").append($newNode);

                $newNode.appendTo("ul");

                $("ul"). prepend ($newNode);

                $newNode.appendTo("ul"); */

               

                //插入同辈节点

                /* $("ul").after($newNode);

                $newNode.insertAfter("ul");

                $("ul").before($newNode);

                $newNode.insertBefore("ul"); */

               

                //替换节点

                /* $("ul li:eq(0)").replaceWith($newNode);

                $newNode.replaceAll("ul li:eq(1)"); */

               

                //复制节点

                //$("ul li:eq(1)").clone(true).appendTo("ul");

               

                //删除节点

                /* $("ul").append($newNode);//将节点添加到ul

                $("ul li:eq(3)").click(function(){//对添加的节点定义事件

                    alert($(this).text());

                });

                $("ul li:eq(3)").remove();//remove后,节点事件也会被删除

                $("ul li:eq(3)").detach();//detach后,节点事件保留,当该节点重新append后事件依然存在

                $("ul li:eq(3)").empty();//删除节点内容

                $("ul").append($newNode);//节点删除后重新将节点append上去,看事件是否还在 */

            });

        </script>

      </head>

      <body>

        <p>热门动画排行</p>

        <ul>

            <li>海贼王</li>

            <li>柯南</li>

            <li>虫师</li>

        </ul>

      </body>

    </html>

    四、节点属性操作

    ü  attr()用来获取与设置元素属性

    $newNode4.attr("alt");//获取alt属性值

    $("img").attr({"50",height:"100"});//设置width、height属性的值

    ü  removeAttr()用来删除元素的属性

    $newNode2.removeAttr("title");//删除元素的title属性

    <!DOCTYPE html>

    <html>

      <head>

        <title>获取与设置节点属性.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

        <script type="text/javascript">

            $(function(){

                /* alert($("img").attr("alt"));

                $("img").attr({"200",height:"200"});

                $("img").removeAttr("title"); */

            });

        </script>

      </head>

      <body>

        <img title="这是一张图片" alt="图片" src="../../img/h.jpg">

      </body>

    </html>

    五、节点遍历  和  六、CSS-DOM操作

    ü  children()方法可以用来获取元素的所有子元素

    如:$("body").children();

    ü  获取<body>元素的子元素,但不包含子元素的子元素

    jQuery可以获取紧邻其后、紧邻其前和位于该元素前与后的所有同辈元素

    语法

    功能

    next([expr])

    用于获取紧邻匹配元素之后的元素,如:$("li:eq(1)").next().css("background-color","#F06");

    prev([expr])

    用于获取紧邻匹配元素之前的元素,如:$("li:eq(1)").prev().css("background-color","#F06");

    slibings([expr])

    用于获取位于匹配元素前面和后面的所有同辈元素,如:$("li:eq(1)").siblings().css("background-color","#F06");

    ü  jQuery遍历前辈元素

    parent():获取元素的父级元素

    parents():元素元素的祖先元素

    ü  CSS-DOM操作

    除css()外,还有获取和设置元素高度、宽度、相对位置等的样式操作方法

    语法

    功能

    css()

    设置或返回匹配元素的样式属性

    height([value])

    设置或返回匹配元素的高度

    width([value])

    设置或返回匹配元素的宽度 

    offset([value])

    返回以像素为单位的top和left坐标。此方法仅对可见元素有效

    案例:

    <!DOCTYPE html>

    <html>

      <head>

        <title>节点的遍历.html</title>

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <script type="text/javascript" src="../../js/jquery-3.3.1.js"></script>

        <script type="text/javascript">

            $(function(){

                //子元素相关操作

    //         $("#div1").children().css("background","red");//遍历所有子元素,不包括子元素的子元素

               

                //前辈元素相关操作

    //         $("#div3").parent().css("background","blue");//获取前辈元素

    //         $("#div3").parents().css("background","blue");//遍历所有的前辈元素

           

                //同辈元素相关操作

    //         $("#div4").next().css("background","red");//匹配后一个元素

    //         $("#div4").prev().css("background","red");//匹配前一个元素

    //         $("#div4").siblings().css({background:"red"});//匹配所有同辈元素

               

                //css-dom操作

                /* var offset = $("#div1").offset();

                alert( "left: " + offset.left + ", top: " + offset.top );  */

            });

        </script>

      </head>

      <body>

        <div id="div0" style="400px;height:400px;border:1px solid black">

            <div id="div1" style="310px;height:310px;border:1px solid black">

                <div id="div2" style="100px;height:100px;border:1px solid black">

                    <div id="div3" style="50px;height:50px;border:1px solid black;background:green"></div>

                </div>

                <div id="div4" style="100px;height:100px;border:1px solid black">

                    <div id="div5" style="50px;height:50px;border:1px solid black;background:green"></div>

                </div>

                <div id="div6" style="100px;height:100px;border:1px solid black">

                    <div id="div7" style="50px;height:50px;border:1px solid black;background:green"></div>

                </div>

            </div>

            <br>

            <div id="div8" style="50px;height:50px;border:1px solid black">

                <div id="div9" style="20px;height:20px;border:1px solid black;background:green"></div>

            </div>

        </div>

      </body>

    </html>

     

     

     

     

  • 相关阅读:
    JavaSE教程-01初识Java-思维导图
    theano 模块 MLP示例
    EM理解(转)
    交叉验证(Cross Validation)方法思想简介
    imfilter()用法
    PSNR
    conv2、filter2、imfilter的区别
    图像上采样(图像插值)增取样(Upsampling)或内插(Interpolating)下采样(降采样),
    CSS清除浮动大全共8种方法
    支付宝轮播
  • 原文地址:https://www.cnblogs.com/zhouyeqin/p/8978752.html
Copyright © 2011-2022 走看看