使用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="width: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="width: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({width:"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({width:"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="width:400px;height:400px;border:1px solid black">

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

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

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

            </div>

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

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

            </div>

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

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

            </div>

        </div>

        <br>

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

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

        </div>

    </div>

  </body>

</html>

 

 

 

 

 

 

posted @ 2018-05-02 09:39  silvan_happy  阅读(659)  评论(0编辑  收藏  举报