JQuery笔记

  • ***当前阶段的笔记 ***

「面向实习生阶段」https://www.aliyundrive.com/s/VTME123M4T9 提取码: 8s6v
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

文章目录

    • 1、DOM 对象与 jQuery 对象相互转换
    • 2、选择器
    • 3、排他思想
    • 4、链式编程
    • 5、jQuery 样式操作
      • 1、css样式操作
      • 2、设置类样式
      • 3、 tab栏切换
      • 4、类操作与className区别
    • 6、 jQuery 效果
      • 1、显示与隐藏
      • 2、滑动
      • 3、淡入效果
      • 4、自定义动画Animate
      • 5、停止动画
    • 7、属性操作
    • 8、jQuery 内容文本值
    • 9、jQuery 元素操作
      • 1、遍历元素
      • 2、创建添加删除元素
    • 10、 jQuery 尺寸
      • 1、 jQuery元素大小
      • 2、 jQuery位置
    • 11、jQuery 事件注册
      • 1、事件处理on
        • **1、bind方式**(不支持代理 支持多个绑定)
        • **2、delegate方式**(只支持代理 支持多个绑定)
        • **3、on方式**(支持代理 支持多个绑定 支持动态元素绑定事件)
      • 2、事件解绑off
        • **1、unbind() 方式**
        • 2、undelegate() 方式
        • 3、off()
        • 4、one()
      • 3、自动触发事件 trigger()
      • 4、JQuery事件对象
    • 12、多库共存
    • 13、本地存储方式
    • 12、多库共存
    • 13、本地存储方式

1、DOM 对象与 jQuery 对象相互转换

<!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="jquery.min.js"></script>
</head>

<body>
   <video src="mov.mp4" muted></video>
   <script>
       // 1. DOM对象转换为 jQuery对象
       // (1) 我们直接获取视频,得到就是jQuery对象
       // $('video');
       // (2) 我们已经使用原生js 获取过来 DOM对象
       var myvideo = document.querySelector('video');
       // $(myvideo).play();  jquery里面没有play 这个方法
       // 2.  jQuery对象转换为DOM对象
       // myvideo.play();
       $('video')[0].play()
       $('video').get(0).play()
   </script>
</body>

</html>

2、选择器

JQuery笔记_第1张图片

JQuery笔记_第2张图片
JQuery笔记_第3张图片

JQuery笔记_第4张图片

jQuery筛选方法(上)
<!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="jquery.min.js"></script>
</head>

<body>
   <div class="yeye">
       <div class="father">
           <div class="son">儿子</div>
       </div>
   </div>

   <div class="nav">
       <p>我是屁</p>
       <div>
           <p>我是p</p>
       </div>
   </div>
   <script>
       // 注意一下都是方法 带括号
       $(function() {
           // 1. 父  parent()  返回的是 最近一级的父级元素 亲爸爸
           console.log($(".son").parent());
           // 2. 子
           // (1) 亲儿子 children()  类似子代选择器  ul>li
           // $(".nav").children("p").css("color", "red");
           // (2) 可以选里面所有的孩子 包括儿子和孙子  find() 类似于后代选择器
           $(".nav").find("p").css("color", "red");
           // 3. 兄
       });
   </script>
</body>

</html>

jQuery筛选方法(下)
<!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="jquery.min.js"></script>
</head>

<body>
   <ol>
       <li>我是ol 的li</li>
       <li>我是ol 的li</li>
       <li class="item">我是ol 的li</li>
       <li>我是ol 的li</li>
       <li>我是ol 的li</li>
       <li>我是ol 的li</li>
   </ol>
   <ul>
       <li>我是ol 的li</li>
       <li>我是ol 的li</li>
       <li>我是ol 的li</li>
       <li>我是ol 的li</li>
       <li>我是ol 的li</li>
       <li>我是ol 的li</li>
   </ul>
   <div class="current">俺有current</div>
   <div>俺木有current</div>
   <script>
       // 注意一下都是方法 带括号
       $(function() {
           // 1. 兄弟元素siblings 除了自身元素之外的所有亲兄弟
           $("ol .item").siblings("li").css("color", "red");
           // 2. 第n个元素
           var index = 2;
           // (1) 我们可以利用选择器的方式选择
           // $("ul li:eq(2)").css("color", "blue");
           // $("ul li:eq("+index+")").css("color", "blue");
           // (2) 我们可以利用选择方法的方式选择 更推荐这种写法
           // $("ul li").eq(2).css("color", "blue");
           // $("ul li").eq(index).css("color", "blue");
           // 3. 判断是否有某个类名
           console.log($("div:first").hasClass("current"));
           console.log($("div:last").hasClass("current"));
       });
   </script>
</body>

</html>
  • 返回指定祖先
<!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="jquery.min.js"></script>
</head>

<body>
   <div class="one">
       <div class="two">
           <div class="three">
               <div class="four">我不容易</div>
           </div>
       </div>
   </div>
   <script>
       console.log($(".four").parent().parent().parent());
       console.log($(".four").parents());
       console.log($(".four").parents(".one"));
   </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="jquery.min.js"></script>
</head>

<body>
   <button>快速</button>
   <button>快速</button>
   <button>快速</button>
   <button>快速</button>
   <button>快速</button>
   <button>快速</button>
   <button>快速</button>
   <script>
       $(function() {
           // 1. 隐式迭代 给所有的按钮都绑定了点击事件
           $("button").click(function() {
               // 2. 当前的元素变化背景颜色
               $(this).css("background", "pink");
               // 3. 其余的兄弟去掉背景颜色 隐式迭代
               $(this).siblings("button").css("background", "");
           });
       })
   </script>
</body>
</html>

4、链式编程

<!DOCTYPE html>
<html>

<head lang="en">
   <meta charset="UTF-8">
   <title></title>
   <style type="text/css">
       * {
           margin: 0;
           padding: 0;
           font-size: 12px;
       }
       
       ul {
           list-style: none;
       }
       
       a {
           text-decoration: none;
       }
       
       .wrapper {
           width: 250px;
           height: 248px;
           margin: 100px auto 0;
           border: 1px solid pink;
           border-right: 0;
           overflow: hidden;
       }
       
       #left,
       #content {
           float: left;
       }
       
       #left li {
           background: url(images/lili.jpg) repeat-x;
       }
       
       #left li a {
           display: block;
           width: 48px;
           height: 27px;
           border-bottom: 1px solid pink;
           line-height: 27px;
           text-align: center;
           color: black;
       }
       
       #left li a:hover {
           background-image: url(images/abg.gif);
       }
       
       #content {
           border-left: 1px solid pink;
           border-right: 1px solid pink;
       }
   </style>
   <script src="jquery.min.js"></script>
   <script>
       $(function() {
           // 1. 鼠标经过左侧的小li 
           $("#left li").mouseover(function() {
               // 2. 得到当前小li 的索引号
               var index = $(this).index();
               console.log(index);
               // 3. 让我们右侧的盒子相应索引号的图片显示出来就好了
               // $("#content div").eq(index).show();
               // 4. 让其余的图片(就是其他的兄弟)隐藏起来
               // $("#content div").eq(index).siblings().hide();
               // 链式编程
               $("#content div").eq(index).show().siblings().hide();

           })
       })
   </script>
</head>

<body>
   <div class="wrapper">
       <ul id="left">
           <li><a href="#">女靴</a></li>
           <li><a href="#">雪地靴</a></li>
           <li><a href="#">冬裙</a></li>
           <li><a href="#">呢大衣</a></li>
           <li><a href="#">毛衣</a></li>
           <li><a href="#">棉服</a></li>
           <li><a href="#">女裤</a></li>
           <li><a href="#">羽绒服</a></li>
           <li><a href="#">牛仔裤</a></li>
       </ul>
       <div id="content">
           <div>
               <a href="#"><img src="images/女靴.jpg" width="200" height="250" /></a>
           </div>
           <div>
               <a href="#"><img src="images/雪地靴.jpg" width="200" height="250" /></a>
           </div>
           <div>
               <a href="#"><img src="images/冬裙.jpg" width="200" height="250" /></a>
           </div>
           <div>
               <a href="#"><img src="images/呢大衣.jpg" width="200" height="250" /></a>
           </div>
           <div>
               <a href="#"><img src="images/毛衣.jpg" width="200" height="250" /></a>
           </div>
           <div>
               <a href="#"><img src="images/棉服.jpg" width="200" height="250" /></a>
           </div>
           <div>
               <a href="#"><img src="images/女裤.jpg" width="200" height="250" /></a>
           </div>
           <div>
               <a href="#"><img src="images/羽绒服.jpg" width="200" height="250" /></a>
           </div>
           <div>
               <a href="#"><img src="images/牛仔裤.jpg" width="200" height="250" /></a>
           </div>
       </div>
   </div>
</body>
</html>

5、jQuery 样式操作

1、css样式操作

参数只写属性名,则是返回属性值
$(this).css(''color''); 
参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开, 属性可以不用加引号.
<!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="jquery.min.js"></script>
   <style>
       div {
           width: 200px;
           height: 200px;
           background-color: pink;
       }
   </style>
</head>

<body>
   <div></div>
   <script>
       // 操作样式之css方法
       $(function() {
           console.log($("div").css("width"));
           // $("div").css("width", "300px");
           // $("div").css("width", 300);
           // $("div").css(height, "300px"); 属性名一定要加引号
           $("div").css({
               width: 400,
               height: 400,
               backgroundColor: "red"
            // 如果是复合属性则必须采取驼峰命名法,如果值不是数字,则需要加引号
           })
       })
   </script>
</body>

</html>

2、设置类样式

1.添加类
$(“div”).addClass(''current'');
2.移除类
$(“div”).removeClass(''current'');
3.切换类
$(“div”).toggleClass(''current'');
<!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>
   <style>
       div {
           width: 150px;
           height: 150px;
           background-color: pink;
           margin: 100px auto;
           transition: all 0.5s;
       }
       
       .current {
           background-color: red;
           transform: rotate(360deg);
       }
   </style>
   <script src="jquery.min.js"></script>
</head>

<body>
   <div class="current"></div>
   <script>
       $(function() {
           // 1. 添加类 addClass()
           // $("div").click(function() {
           //     // $(this).addClass("current");
           // });
           // 2. 删除类 removeClass()
           // $("div").click(function() {
           //     $(this).removeClass("current");
           // });
           // 3. 切换类 toggleClass()
           $("div").click(function() {
               $(this).toggleClass("current");
           });
       })
   </script>
</body>

</html>

3、 tab栏切换

<!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>
   <style>
       * {
           margin: 0;
           padding: 0;
       }
       
       li {
           list-style-type: none;
       }
       
       .tab {
           width: 978px;
           margin: 100px auto;
       }
       
       .tab_list {
           height: 39px;
           border: 1px solid #ccc;
           background-color: #f1f1f1;
       }
       
       .tab_list li {
           float: left;
           height: 39px;
           line-height: 39px;
           padding: 0 20px;
           text-align: center;
           cursor: pointer;
       }
       
       .tab_list .current {
           background-color: #c81623;
           color: #fff;
       }
       
       .item_info {
           padding: 20px 0 0 20px;
       }
       
       .item {
           display: none;
       }
   </style>
   <script src="jquery.min.js"></script>
</head>

<body>
   <div class="tab">
       <div class="tab_list">
           <ul>
               <li class="current">商品介绍</li>
               <li>规格与包装</li>
               <li>售后保障</li>
               <li>商品评价(50000</li>
               <li>手机社区</li>
           </ul>
       </div>
       <div class="tab_con">
           <div class="item" style="display: block;">
               商品介绍模块内容
           </div>
           <div class="item">
               规格与包装模块内容
           </div>
           <div class="item">
               售后保障模块内容
           </div>
           <div class="item">
               商品评价(50000)模块内容
           </div>
           <div class="item">
               手机社区模块内容
           </div>

       </div>
   </div>
   <script>
       $(function() {
           // 点击上部的li,当前li 添加current类,其余兄弟移除类
           $(".tab_list li").click(function() {
               // 链式编程操作
               $(this).addClass("current").siblings().removeClass("current");
               // 让下部里面相应索引号的item显示,其余的item隐藏
               $(".tab_con .item").eq($(this).index()).show().siblings().hide();
           });
       })
   </script>
</body>

</html>

4、类操作与className区别

原生 JS 中 className 会覆盖元素原先里面的类名。
jQuery 里面类操作只是对指定类进行操作,不影响原先的类名。
<!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>
   <style>
       .one {
           width: 200px;
           height: 200px;
           background-color: pink;
           transition: all .3s;
       }
       
       .two {
           transform: rotate(720deg);
       }
   </style>
   <script src="jquery.min.js"></script>
</head>

<body>
   <div class="one two"></div>
   <script>
       // var one = document.querySelector(".one");
       // one.className = "two";
       // $(".one").addClass("two");  这个addClass相当于追加类名 不影响以前的类名
       $(".one").removeClass("two");
   </script>
</body>

</html>

6、 jQuery 效果

显示隐藏 show()hide() toggle()
滑动slideDown()slideUp()slideToggle()
淡入淡出fadeIn()fadeOut()fadeToggle()fadeTo()
自定义动画animate()

1、显示与隐藏

show([speed,[easing],[fn]])1)参数都可以省略, 无动画直接显示。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次
hide([speed,[easing],[fn]])1)参数都可以省略, 无动画直接显示。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。
toggle([speed,[easing],[fn]])1)参数都可以省略, 无动画直接显示。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。
    <script>
        $(function() {
            $("button").eq(0).click(function() {
                $("div").show(1000, function() {
                    alert(1);
                });
            })
            $("button").eq(1).click(function() {
                $("div").hide(1000, function() {
                    alert(1);
                });
            })
            $("button").eq(2).click(function() {
                    $("div").toggle(1000);
                })
        });
    </script>
<!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>
   <style>
       div {
           width: 150px;
           height: 300px;
           background-color: pink;
       }
   </style>
   <script src="jquery.min.js"></script>
</head>

<body>
   <button>显示</button>
   <button>隐藏</button>
   <button>切换</button>
   <div></div>
   <script>
       $(function() {
           $("button").eq(0).click(function() {
               $("div").show(1000, function() {
                   alert(1);
               });
           })
           $("button").eq(1).click(function() {
               $("div").hide(1000, function() {
                   alert(1);
               });
           })
           $("button").eq(2).click(function() {
                   $("div").toggle(1000);
               })
               // 一般情况下,我们都不加参数直接显示隐藏就可以了
       });
   </script>
</body>

</html>

2、滑动

slideUp([speed,[easing],[fn]])
(1)参数都可以省略。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)。
(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。
slideDown([speed,[easing],[fn]])
(1)参数都可以省略。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)。
(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。

(1)over:鼠标移到元素上要触发的函数(相当于mouseenter)
(2)out:鼠标移出元素要触发的函数(相当于mouseleave)
(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>
   <style>
       div {
           width: 150px;
           height: 300px;
           background-color: pink;
           display: none;
       }
   </style>
   <script src="jquery.min.js"></script>
</head>

<body>
   <button>下拉滑动</button>
   <button>上拉滑动</button>
   <button>切换滑动</button>
   <div></div>
   <script>
       $(function() {
           $("button").eq(0).click(function() {
               // 下滑动 slideDown()
               $("div").slideDown();
           })
           $("button").eq(1).click(function() {
               // 上滑动 slideUp()
               $("div").slideUp(500);
           })
           $("button").eq(2).click(function() {
               // 滑动切换 slideToggle()
               $("div").slideToggle(500);
           });
       });
   </script>
</body>

</html>
<!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>
   <style>
       * {
           margin: 0;
           padding: 0;
       }
       
       li {
           list-style-type: none;
       }
       
       a {
           text-decoration: none;
           font-size: 14px;
       }
       
       .nav {
           margin: 100px;
       }
       
       .nav>li {
           position: relative;
           float: left;
           width: 80px;
           height: 41px;
           text-align: center;
       }
       
       .nav li a {
           display: block;
           width: 100%;
           height: 100%;
           line-height: 41px;
           color: #333;
       }
       
       .nav>li>a:hover {
           background-color: #eee;
       }
       
       .nav ul {
           display: none;
           position: absolute;
           top: 41px;
           left: 0;
           width: 100%;
           border-left: 1px solid #FECC5B;
           border-right: 1px solid #FECC5B;
       }
       
       .nav ul li {
           border-bottom: 1px solid #FECC5B;
       }
       
       .nav ul li a:hover {
           background-color: #FFF5DA;
       }
   </style>
   <script src="jquery.min.js"></script>
</head>

<body>
   <ul class="nav">
       <li>
           <a href="#">微博</a>
           <ul>
               <li>
                   <a href="">私信</a>
               </li>
               <li>
                   <a href="">评论</a>
               </li>
               <li>
                   <a href="">@我</a>
               </li>
           </ul>
       </li>
       <li>
           <a href="#">微博</a>
           <ul>
               <li>
                   <a href="">私信</a>
               </li>
               <li>
                   <a href="">评论</a>
               </li>
               <li>
                   <a href="">@我</a>
               </li>
           </ul>
       </li>
       <li>
           <a href="#">微博</a>
           <ul>
               <li>
                   <a href="">私信</a>
               </li>
               <li>
                   <a href="">评论</a>
               </li>
               <li>
                   <a href="">@我</a>
               </li>
           </ul>
       </li>
       <li>
           <a href="#">微博</a>
           <ul>
               <li>
                   <a href="">私信</a>
               </li>
               <li>
                   <a href="">评论</a>
               </li>
               <li>
                   <a href="">@我</a>
               </li>
           </ul>
       </li>
   </ul>
   <script>
       $(function() {
           // 鼠标经过
           // $(".nav>li").mouseover(function() {
           //     // $(this) jQuery 当前元素  this不要加引号
           //     // show() 显示元素  hide() 隐藏元素
           //     $(this).children("ul").slideDown(200);
           // });
           // // 鼠标离开
           // $(".nav>li").mouseout(function() {
           //     $(this).children("ul").slideUp(200);
           // });
           // 1. 事件切换 hover 就是鼠标经过和离开的复合写法
           // $(".nav>li").hover(function() {
           //     $(this).children("ul").slideDown(200);
           // }, function() {
           //     $(this).children("ul").slideUp(200);
           // });
           // 2. 事件切换 hover  如果只写一个函数,那么鼠标经过和鼠标离开都会触发这个函数
           $(".nav>li").hover(function() {
               $(this).children("ul").slideToggle();
           });
       })
   </script>
</body>

</html>

3、淡入效果

fadeIn([speed,[easing],[fn]])1)参数都可以省略。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。

fadeOut([speed,[easing],[fn]])1)参数都可以省略。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)表示动画时长的毫秒数值(如:1000)(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可
用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。

淡入淡出切换效果
fadeToggle([speed,[easing],[fn]])1)参数都可以省略。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。

渐进方式调整到指定的不透明度
fadeTo([[speed],opacity,[easing],[fn]])1)opacity 透明度必须写,取值 0~1 之间。
(2)speed:三种预定速度之一的字符串(“slow”,“normal”, or “fast”)或表示动画时长的毫秒数值(如:1000)。必须写
(3)easing:(Optional) 用来指定切换效果,默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。
<!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>
   <style>
       div {
           width: 150px;
           height: 300px;
           background-color: pink;
           display: none;
       }
   </style>
   <script src="jquery.min.js"></script>
</head>

<body>
   <button>淡入效果</button>
   <button>淡出效果</button>
   <button>淡入淡出切换</button>
   <button>修改透明度</button>
   <div></div>
   <script>
       $(function() {
           $("button").eq(0).click(function() {
               // 淡入 fadeIn()
               $("div").fadeIn(1000);
           })
           $("button").eq(1).click(function() {
               // 淡出 fadeOut()
               $("div").fadeOut(1000);
           })
           $("button").eq(2).click(function() {
               // 淡入淡出切换 fadeToggle()
               $("div").fadeToggle(1000);
           });
           $("button").eq(3).click(function() {
               //  修改透明度 fadeTo() 这个速度和透明度要必须写
               $("div").fadeTo(1000, 0.5);
           });
       });
   </script>
</body>

</html>

4、自定义动画Animate

animate(params,[speed],[easing],[fn])1)params: 想要更改的样式属性,以对象形式传递,必须写。 
属性名可以不用带引号, 如果是复合属性则需要采
取驼峰命名法 borderLeft。其余参数都可以省略。
(2)speed:三种预定速度之一的字符
(“slow”,“normal”, or “fast”)或表
示动画时长的毫秒数值(如:1000)(3)easing:(Optional) 用来指定切换效果,
默认是“swing”,可用参数“linear”。
(4)fn: 回调函数,在动画完成时执行的函数,每个元素执行一次。
var json1 = {
    'width': '150',
    'height': '150',
    'borderRadius': 200,
    'left': '400',
    'top': '400'
}
var json2 = {
    'width': '100',
    'height': '100',
    'borderRadius': '0',
    'left': '0',
    'top': '100'
}
$('button').eq(0).click(function() {
    $('div').animate(json1, 2000)
    $('div').animate(json2, 2000)
    // $('div').animate({
    //     width: 300,
    //     height: 300,
    //     left: 100,
    //     top: 200,
    //     borderRadius: 300
    // }, 2000)
})
//参数1:后续动画是否不执行
//参数2:控制当前动画停止时是否闪现到目标位置
$('button').eq(1).click(function() {
	$('div').stop(true, false)
}
<!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="jquery.min.js"></script>
   <style>
       div {
           position: absolute;
           width: 200px;
           height: 200px;
           background-color: pink;
       }
   </style>
</head>

<body>
   <button>动起来</button>
   <div></div>
   <script>
       $(function() {
           $("button").click(function() {
               $("div").animate({
                   left: 500,
                   top: 300,
                   opacity: .4,
                   width: 500
               }, 500);
           })
       })
   </script>
</body>

</html>

5、停止动画

1 动画或效果队列
动画或者效果一旦触发就会执行,如果多次触发,就造成多个动画或者效果排队执行。

2 停止排队
stop()
(1)stop() 方法用于停止动画或效果。
(2) 注意: stop() 写到动画或者效果的前面, 相当于停止结束上一次的动画。
//参数1:后续动画是否不执行
//参数2:控制当前动画停止时是否闪现到目标位置
$('button').eq(1).click(function() {
	$('div').stop(true, true)
})

7、属性操作

1、动态设置或获取元素固有属性值 prop()
    获取属性语法prop(''属性'')
    设置属性语法prop(''属性'', ''属性值'')

2、设置或获取元素自定义属性值 attr()
    1 获取属性语法
    attr(''属性'') // 类似原生 getAttribute()3
    2 设置属性语法
    attr(''属性'', ''属性值'') // 类似原生 setAttribute()

3、数据缓存 data()
data() 方法可以在指定的元素上存取数据,并不会修改 DOM元素结构。一旦页面刷新,之前存放的数据都将被移除。
    1 附加数据语法
    data(''name'',''value'') // 向被选元素附加数据 
    2 获取数据语法
    date(''name'') // 向被选元素获取数据 
<!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="jquery.min.js"></script>
</head>

<body>
   <a href="http://www.itcast.cn" title="都挺好">都挺好</a>
   <input type="checkbox" name="" id="" checked>
   <div index="1" data-index="2">我是div</div>
   <span>123</span>
   <script>
       $(function() {
           //1. element.prop("属性名") 获取元素固有的属性值
           console.log($("a").prop("href"));
           $("a").prop("title", "我们都挺好");
           $("input").change(function() {
               console.log($(this).prop("checked"));
           });
           // console.log($("div").prop("index"));
           // 2. 元素的自定义属性 我们通过 attr()
           console.log($("div").attr("index"));
           $("div").attr("index", 4);
           console.log($("div").attr("data-index"));
           // 3. 数据缓存 data() 这个里面的数据是存放在元素的内存里面
           $("span").data("uname", "andy");
           console.log($("span").data("uname"));
           // 这个方法获取data-index h5自定义属性 第一个 不用写data-  而且返回的是数字型
           console.log($("div").data("index"));
       })
   </script>
</body>

</html>

8、jQuery 内容文本值

1 普通元素内容 html()( 相当于原生inner HTML)
html() // 获取元素的内容
html(''内容'') // 设置元素的内容
2 普通元素文本内容 text() (相当与原生 innerText)
text() // 获取元素的文本内容
text(''文本内容'') // 设置元素的文本内容
3 表单的值 val()( 相当于原生value)
val() // 获取表单的值
val(''内容'') // 设置表单的值
<!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="jquery.min.js"></script>
</head>

<body>
  <div>
      <span>我是内容</span>
  </div>
  <input type="text" value="请输入内容">
  <script>
      // 1. 获取设置元素内容 html()
      console.log($("div").html());
      // $("div").html("123");
      // 2. 获取设置元素文本内容 text()
      console.log($("div").text());
      $("div").text("123");
      // 3. 获取设置表单值 val()
      console.log($("input").val());
      $("input").val("123");
  </script>
</body>

</html>

9、jQuery 元素操作

1、遍历元素

注意:

  1. demEle 是每个DOM元素对象,不是jquery对象
  2. 所以要想使用jquery方法,需要给这个dom元素转换为jquery对象 ( d o m E l e ) 或 者 (domEle)或者 (domEle).each(object,function (index, element) { }。$.each()方法可用于遍历任何对象。对象里面的函数有2个参数: index 是每个元素的索引号; element 遍历内容。主要用于数据处理,比如数组。
jQuery 隐式迭代是对同一类元素做了同样的操作。 如果想要给同一类元素做不同操作,就需要用到遍历。
$("div").each(function (index, domEle) {}1 each() 方法遍历匹配的每一个元素。主要用DOM处理。each 每一个
2 里面的回调函数有2个参数: index 是每个元素的索引号; demEle 是每个DOM元素对象,不是jquery对象
3 所以要想使用jquery方法,需要给这个dom元素转换为jquery对象 $(domEle)或者$.each(object,function (index, element) {}4.$.each()方法可用于遍历任何对象。对象里面的函数有2个参数: index 是每个元素的索引号; element 遍历内容。主要用于数据处理,比如数组。
<!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>
    <style>

    </style>
    <script src="./jquery-1.11.1.js"></script>
</head>

<body>
<div>1</div>
<div>2</div>
<div>3</div>
<script>
    $(function () {
        var sum = 0;
        // 1. each() 方法遍历元素
        var arr = ["red", "green", "blue"];
        $("div").each(function (i, domEle) {
            // 回调函数第一个参数一定是索引号  可以自己指定索引号号名称
            // console.log(i);
            // 回调函数第二个参数一定是 dom元素对象 也是自己命名
            // console.log(domEle);
            // domEle.css("color"); // domEle是DOM对象 dom对象没有css方法
            $(domEle).css("color", arr[i]);
            sum += parseInt($(domEle).text());
        })
        console.log(sum);
        // 2. $.each() 方法遍历元素 主要用于遍历数据,处理数据
        $.each($("div"), function(i, ele) {
            console.log(i);
            console.log(ele);
        });

        $.each(arr, function(i, ele) {
            console.log(i);
            console.log(ele);
        })
        
        $.each({
            name: "andy",
            age: 18
        }, function (i, ele) {
            console.log(i); // 输出的是 name age 属性名
            console.log(ele); // 输出的是 andy  18 属性值
        })
    })
</script>
</body>

</html>

2、创建添加删除元素

创建元素
var $spanNode = $("我是一个span元素");
var node = $("#box").html("
  • 我是li
  • "
    ); 添加元素 // 在$(selector)中追加$node $(selector).append($node); // 在$(selector)中追加div元素,参数为htmlString $(selector).append('
    '
    ); // $('ul').append(newSpan) // newSpan.appendTo($('ul')) // $('ul').prepend(newSpan) // newSpan.prependTo($('ul')) 内部添加 element.append(''内容'') 把内容放入匹配元素内部最后面, 类似原生 appendChild element.prepend(''内容'') 把内容放入匹配元素内部最前面。 外部添加 element.after(''内容'') // 把内容放入目标元素后面 element.before(''内容'') // 把内容放入目标元素前面 1 内部添加元素,生成之后,它们是父子关系。 2 外部添加元素,生成之后,他们是兄弟关系。 删除元素 element.remove() // 删除匹配的元素(本身) element.empty() // 删除匹配的元素集合中所有的子节点 element.html('''') // 清空匹配的元素内容 1 remove 删除元素本身。 2 empt()html('''') 作用等价,都可以删除元素里面的内容,只不过 html 还可以设置内容。 复制元素 // 复制$(selector)所匹配到的元素 // 返回值为复制的新元素 $(selector).clone();
    <!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="jquery.min.js"></script>
    </head>
    
    <body>
       <ul>
           <li>原先的li</li>
       </ul>
       <div class="test">我是原先的div</div>
       <script>
           $(function() {
               // 1. 创建元素
               var li = $("
  • 我是后来创建的li
  • "
    ); // 2. 添加元素 // (1) 内部添加 // $("ul").append(li); 内部添加并且放到内容的最后面 $("ul").prepend(li); // 内部添加并且放到内容的最前面 // (2) 外部添加 var div = $("
    我是后妈生的
    "
    ); // $(".test").after(div); $(".test").before(div); // 3. 删除元素 // $("ul").remove(); 可以删除匹配的元素 自杀 // $("ul").empty(); // 可以删除匹配的元素里面的子节点 孩子 $("ul").html(""); // 可以删除匹配的元素里面的子节点 孩子 }) </script> </body> </html>

    10、 jQuery 尺寸

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ZeYvXFA-1647492160513)(…/…/…/AppData/Roaming/Typora/typora-user-images/image-20211227114730382.png)]

    1、 jQuery元素大小

    <!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>
       <style>
           div {
               width: 200px;
               height: 200px;
               background-color: pink;
               padding: 10px;
               border: 15px solid red;
               margin: 20px;
           }
       </style>
       <script src="jquery.min.js"></script>
    </head>
    
    <body>
       <div></div>
       <script>
           $(function() {
               // 1. width() / height() 获取设置元素 width和height大小 
               console.log($("div").width());
               // $("div").width(300);
    
               // 2. innerWidth() / innerHeight()  获取设置元素 width和height + padding 大小 
               console.log($("div").innerWidth());
    
               // 3. outerWidth()  / outerHeight()  获取设置元素 width和height + padding + border 大小 
               console.log($("div").outerWidth());
    
               // 4. outerWidth(true) / outerHeight(true) 获取设置 width和height + padding + border + margin
               console.log($("div").outerWidth(true));
           })
       </script>
    </body>
    
    </html>
    

    2、 jQuery位置

    offset() 设置或获取元素偏移
    
        1  offset() 方法设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系。
        2 该方法有2个属性 left、top 。offset().top 用于获取距离文档顶部的距离,offset().left 用于获取距离文档左侧的距离。
        3 可以设置元素的偏移:offset({ top: 10, left: 30 });
    
    position() 获取元素偏移
    
        1  position() 方法用于返回被选元素相对于带有定位的父级偏移坐标,如果父级都没有定位,则以文档为准。
        2 该方法有2个属性 left、top、position().top 用于获取距离定位父级顶部的距离,position().left 用于获取距离定位父级左侧的距离。
    
    scrollTop()/scrollLeft() 设置或获取元素被卷去的头部和左侧
    
        1 scrollTop() 方法设置或返回被选元素被卷去的头部。
        2 不跟参数是获取,参数为不带单位的数字则是设置被卷去的头部。
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            .box1 {
                width: 200px;
                height: 200px;
                background-color: red;
                position: relative;
                left: 100px;
                top: 100px;
                border: 10px solid;
                padding: 10px;
            }
    
            .box2 {
                width: 50px;
                height: 50px;
                background-color: black;
                position: absolute;
                top: 10px;
                left: 10px;
            }
    
            body {
                height: 5000px;
                height: 5000px;
            }
    
            button {
                position: fixed;
                left: 0;
                top: 0;
            }
        </style>
    </head>
    <body>
    <div class="box1">
        <div class="box2"></div>
    </div>
    <button>按钮</button>
    <script src="jquery-1.11.1.js"></script>
    <script>
        $(function () {
            $('button').click(function () {
                // 获取宽高
                // console.log($('.box1').width(), $('.box1').height())
    
                // 设置宽高
                // $('.box1').width(400)
                // $('.box1').height(400)
    
                // 获取偏移  与父级元素无关
                // console.log($('.box1').offset())
                // console.log($('.box1').offset().top)
                // console.log($('.box1').offset().left)
                // console.log($('.box2').offset()) // 与父级元素无关
                // console.log($('.box2').offset().top)
                // console.log($('.box2').offset().left)
    
                // 设置偏移  不能单独设置  与父级元素无关
                // $('.box2').offset({top: 20, left: 20}) // 与父级元素无关
                // $('.box2').offset().left(20) 报错,不能单独设置
                // console.log($('.box2').offset())
    
                // 获取位置
                // console.log($('.box1').position())
                // console.log($('.box1').position().top)
                // console.log($('.box1').position().left)
                // console.log($('.box2').position()) // 相对于带有定位的父级偏移坐标,如果父级都没有定位,则以文档为准。
                // console.log($('.box2').position().top)
                // console.log($('.box2').position().left)
    
                // 设置位置  无效
                // $('.box1').position({
                //     width:500,
                //     height:500
                // })
    
                // 获取卷曲
                // console.log($(window).scrollTop()) // 卷曲多少输出多少
                // console.log($(window).scrollLeft())
                // console.log($('.box1').scrollTop()) //0
                // console.log($('.box1').scrollLeft()) //0
                // console.log($('.box2').scrollTop()) //0
                // console.log($('.box2').scrollLeft()) //0
    
                // 设置
                $(window).scrollTop(2000) // 设置多少输出多少
                $(window).scrollLeft(2000)
                $('.box1').scrollTop(2000)
                $('.box1').scrollLeft(2000)
                $('.box2').scrollTop(2000)
                $('.box2').scrollLeft(2000)
                console.log($(window).scrollTop()) //2000
                console.log($(window).scrollLeft())
                console.log($('.box1').scrollTop()) //0
                console.log($('.box1').scrollLeft()) //0
                console.log($('.box2').scrollTop()) //0
                console.log($('.box2').scrollLeft()) //0
            })
        })
    </script>
    </body>
    </html>
    

    11、jQuery 事件注册

    1、事件处理on

    1、bind方式(不支持代理 支持多个绑定)

    作用:给匹配到的元素直接绑定事件

    // 绑定单击事件处理程序
    第一个参数:事件类型
    第二个参数:事件处理程序
    $("p").bind("click mouseenter", function(e){
        //事件响应方法
    });
    

    优点:可以同时绑定多个事件,比如:bind(“mouseenter mouseleave”, function(){})

    缺点:要绑定事件的元素必须存在文档中。

    2、delegate方式(只支持代理 支持多个绑定)

    特点:性能高,支持动态创建的元素

    作用:给匹配到的元素绑定事件,对支持动态创建的元素有效

    // 第一个参数:selector,要绑定事件的元素
    // 第二个参数:事件类型
    // 第三个参数:事件处理函数
    $(".parentBox").delegate("p", "click", function(){
        //为 .parentBox下面的所有的p标签绑定事件
    });
    

    优势:减少事件绑定次数提高效率,支持动态创建出来的元素绑定事件!

    3、on方式(支持代理 支持多个绑定 支持动态元素绑定事件)

    作用:给匹配的元素绑定事件,包括了上面所有绑定事件方式的优点

    on() 方法在匹配元素上绑定一个或多个事件的事件处理函数
    语法:
    element.on(events,[selector],fn) 
    
    1 events:一个或多个用空格分隔的事件类型,如"click""keydown"2 selector: 元素的子元素选择器 。
    3 fn:回调函数 即绑定在元素身上的侦听函数。
    
    on() 方法优势1:
    可以绑定多个事件,多个处理事件处理程序。
    $(“div”).on({mouseover: function(){},mouseout: function(){},click: function(){}
    }); 
    
    如果事件处理程序相同
    $(“div”).on(“mouseover mouseout”, function() {
    	$(this).toggleClass(“current”);
    }); 
    
    可以事件委派操作 。事件委派的定义就是,把原来加给子元素身上的事件绑定在父元素身上,就是把事件委派给父元素。
    $('ul').on('click', 'li', function() {
    alert('hello world!');
    }); 
    
    动态创建的元素,click() 没有办法绑定事件, on() 可以给动态生成的元素绑定事件
    $(“div").on("click",”p”, function(){
    	alert("俺可以给动态生成的元素绑定事件")
    });
    $("div").append($("

    我是动态创建的p

    "
    ));
    <script>
        $(function () {
            $("input").on("keyup", function (e) {
                console.log(e);
                if (e.keyCode === 13) {
                    $(this).next().next().focus().select()
                }
            })
            // $("input").on("mouseenter", function () {
            //     $(this).select()
            // })
            $('input').mouseenter(function (){
                $(this).select()
            })
        })
    </script>
    
    <script>
        $(function () {
          // bind 不支持代理  支持多个绑定
          $('div').bind('click mouseenter mouseleave',function (){
            console.log(1)
          })
          // $('div').bind('p','click mouseenter mouseleave',function (){
          //   console.log(1)
          // })
          $('div').unbind()
          $('div').unbind('click')
    
          // delegate 只支持代理  支持多个绑定
          // $('div').delegate('click mouseenter mouseleave',function (){
          //   console.log(1)
          // })
          $('div').delegate('p','click mouseenter mouseleave',function (){
            console.log(1)
          })
          $('div').undelegate()
          $('div').undelegate('click')
    
          // on  支持代理  支持多个绑定  支持动态元素绑定事件
          $('div').on('click mouseenter mouseleave',function (){
            console.log(1)
          })
          // $('div').on('li','click',function (){
          //   console.log(1)
          // })
          $('div').off()
          $('div').off('click')
        })
    </script>
    

    2、事件解绑off

    事件解绑

    1、unbind() 方式

    作用:解绑 bind方式绑定的事件

    $(selector).unbind(); //解绑所有的事件
    $(selector).unbind(“click”); //解绑指定的事件
    
    2、undelegate() 方式

    作用:解绑delegate方式绑定的事件

    $( selector ).undelegate(); //解绑所有的delegate事件
    $( selector).undelegate( “click” ); //解绑所有的click事件
    
    3、off()
    off() 方法可以移除通过 on() 方法添加的事件处理程序。
    $("p").off() // 解绑p元素所有事件处理程序
    $("p").off( "click") // 解绑p元素上面的点击事件 后面
    的 foo 是侦听函数名
    $("ul").off("click", "li"); // 解绑事件委托
    
    4、one()
    如果有的事件只想触发一次, 可以使用 one() 来绑定事件。
    
    <!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>
       <style>
           div {
               width: 100px;
               height: 100px;
               background-color: pink;
           }
       </style>
       <script src="jquery.min.js"></script>
       <script>
           $(function() {
               $("div").on({
                   click: function() {
                       console.log("我点击了");
                   },
                   mouseover: function() {
                       console.log('我鼠标经过了');
                   }
               });
               $("ul").on("click", "li", function() {
                   alert(11);
               });
               // 1. 事件解绑 off 
               // $("div").off();  // 这个是解除了div身上的所有事件
               $("div").off("click"); // 这个是解除了div身上的点击事件
               $("ul").off("click", "li");
               // 2. one() 但是它只能触发事件一次
               $("p").one("click", function() {
                   alert(11);
               })
           })
       </script>
    </head>
    
    <body>
       <div></div>
       <ul>
           <li>我们都是好孩子</li>
           <li>我们都是好孩子</li>
           <li>我们都是好孩子</li>
       </ul>
       <p>我是屁</p>
    </body>
    
    </html>
    

    3、自动触发事件 trigger()

    有些事件希望自动触发, 比如轮播图自动播放功能跟点击右侧按钮一致。可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发。
    
    element.click() // 第一种简写形式
    element.trigger("type") // 第二种自动触发模式
    
    $("p").on("click", function () {
    	alert("hi~");
    });
    $("p").trigger("click"); // 此时自动触发点击事件,不需要鼠标点击
    element.triggerHandler(type) // 第三种自动触发模式
    
    <!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>
       <style>
           div {
               width: 100px;
               height: 100px;
               background-color: pink;
           }
       </style>
       <script src="jquery.min.js"></script>
       <script>
           $(function() {
               $("div").on("click", function() {
                   alert(11);
               });
    
               // 自动触发事件
               // 1. 元素.事件()
               // $("div").click();会触发元素的默认行为
               // 2. 元素.trigger("事件")
               // $("div").trigger("click");会触发元素的默认行为
               $("input").trigger("focus");
               // 3. 元素.triggerHandler("事件") 就是不会触发元素的默认行为
               $("div").triggerHandler("click");
               $("input").on("focus", function() {
                   $(this).val("你好吗");
               });
               // $("input").triggerHandler("focus");
           });
       </script>
    </head>
    
    <body>
       <div></div>
       <input type="text">
    </body>
    
    </html>
    

    4、JQuery事件对象

    $.extend([deep], target, object1, [objectN])
    1 deep: 如果设为true 为深拷贝, 默认为false 浅拷贝
    2 target: 要拷贝的目标对象
    3 object1:待拷贝到第一个对象的对象。
    4 objectN:待拷贝到第N个对象的对象。
    5 浅拷贝目标对象引用的被拷贝的对象地址,修改目标对象会影响被拷贝对象。
    6 深拷贝,前面加true, 完全克隆,修改目标对象不会影响被拷贝对象。
    
    <!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="jquery.min.js"></script>
       <script>
           $(function() {
               // var targetObj = {};
               // var obj = {
               //     id: 1,
               //     name: "andy"
               // };
               // // $.extend(target, obj);
               // $.extend(targetObj, obj);
               // console.log(targetObj);
               // var targetObj = {
               //     id: 0
               // };
               // var obj = {
               //     id: 1,
               //     name: "andy"
               // };
               // // $.extend(target, obj);
               // $.extend(targetObj, obj);
               // console.log(targetObj); // 会覆盖targetObj 里面原来的数据
               var targetObj = {
                   id: 0,
                   msg: {
                       sex: '男'
                   }
               };
               var obj = {
                   id: 1,
                   name: "andy",
                   msg: {
                       age: 18
                   }
               };
               // // $.extend(target, obj);
               // $.extend(targetObj, obj);
               // console.log(targetObj); // 会覆盖targetObj 里面原来的数据
               // // 1. 浅拷贝把原来对象里面的复杂数据类型地址拷贝给目标对象
               // targetObj.msg.age = 20;
               // console.log(targetObj);
               // console.log(obj);
               // 2. 深拷贝把里面的数据完全复制一份给目标对象 如果里面有不冲突的属性,会合并到一起 
               $.extend(true, targetObj, obj);
               // console.log(targetObj); // 会覆盖targetObj 里面原来的数据
               targetObj.msg.age = 20;
               console.log(targetObj); // msg :{sex: "男", age: 20}
               console.log(obj);
           })
       </script>
    </head>
    
    <body>
    
    </body>
    
    </html>
    

    12、多库共存

    jQuery使用$作为标示符,随着jQuery的流行,其他 js 库
    也会用这$作为标识符, 这样一起使用会引起冲突。
    需要一个解决方案,让jQuery 和其他的js库不存在
    冲突,可以同时存在,这就叫做多库共存。
    1 把里面的 $ 符号 统一改为 jQuery。 比如 jQuery(''div'')
    2 jQuery 变量规定新的名称:$.noConflict() var xx = $.noConflict();
    
    <!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="jquery.min.js"></script>
       <script>
           $(function() {
               function $(ele) {
                   return document.querySelector(ele);
               }
               console.log($("div"));
               // 1. 如果$ 符号冲突 我们就使用 jQuery
               jQuery.each();
               // 2. 让jquery 释放对$ 控制权 让用自己决定
               var suibian = jQuery.noConflict();
               console.log(suibian("span"));
               suibian.each();
           })
       </script>
    </head>
    
    <body>
       <div></div>
       <span></span>
    </body>
    
    </html>
    

    13、本地存储方式

    <script>
        var todolist = [{
            title: '我今天吃八个馒头',
            done: false
        }, {
            title: '我今天学习jq',
            done: false
        }, ];
        // localStorage.setItem("todo", todolist);
        // 1. 本地存储里面只能存储字符串的数据格式 把我们的数组对象转换为字符串格式 JSON.stringify()
        localStorage.setItem("todo", JSON.stringify(todolist));
        var data = localStorage.getItem("todo");
        // console.log(typeof data);
        // console.log(data[0].title);
        // 2. 获取本地存储的数据 我们需要把里面的字符串数据转换为 对象格式 JSON.parse()
        data = JSON.parse(data);
        console.log(data);
        console.log(data[0].title);
    </script>
     2. 深拷贝把里面的数据完全复制一份给目标对象 如果里面有不冲突的属性,会合并到一起 
               $.extend(true, targetObj, obj);
               // console.log(targetObj); // 会覆盖targetObj 里面原来的数据
               targetObj.msg.age = 20;
               console.log(targetObj); // msg :{sex: "男", age: 20}
               console.log(obj);
           })
       </script>
    </head>
    
    <body>
    
    </body>
    
    </html>
    

    12、多库共存

    jQuery使用$作为标示符,随着jQuery的流行,其他 js 库
    也会用这$作为标识符, 这样一起使用会引起冲突。
    需要一个解决方案,让jQuery 和其他的js库不存在
    冲突,可以同时存在,这就叫做多库共存。
    1 把里面的 $ 符号 统一改为 jQuery。 比如 jQuery(''div'')
    2 jQuery 变量规定新的名称:$.noConflict() var xx = $.noConflict();
    
    <!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="jquery.min.js"></script>
       <script>
           $(function() {
               function $(ele) {
                   return document.querySelector(ele);
               }
               console.log($("div"));
               // 1. 如果$ 符号冲突 我们就使用 jQuery
               jQuery.each();
               // 2. 让jquery 释放对$ 控制权 让用自己决定
               var suibian = jQuery.noConflict();
               console.log(suibian("span"));
               suibian.each();
           })
       </script>
    </head>
    
    <body>
       <div></div>
       <span></span>
    </body>
    
    </html>
    

    13、本地存储方式

    <script>
        var todolist = [{
            title: '我今天吃八个馒头',
            done: false
        }, {
            title: '我今天学习jq',
            done: false
        }, ];
        // localStorage.setItem("todo", todolist);
        // 1. 本地存储里面只能存储字符串的数据格式 把我们的数组对象转换为字符串格式 JSON.stringify()
        localStorage.setItem("todo", JSON.stringify(todolist));
        var data = localStorage.getItem("todo");
        // console.log(typeof data);
        // console.log(data[0].title);
        // 2. 获取本地存储的数据 我们需要把里面的字符串数据转换为 对象格式 JSON.parse()
        data = JSON.parse(data);
        console.log(data);
        console.log(data[0].title);
    </script>
    

    你可能感兴趣的:(https,vue.js,ajax,javascript)