jQuery笔记

jQuery

一、jQuery概述

1.1、JavaScript库

​ 仓库:可以把很多东西放到这个仓库里面,找东西只需要到仓库里面查找到就可以了

​ JavaScript库:即library,是一个封装好的特定的集合(方法和函数)。从封装一大堆函数的角色理解库,就是在这个库中,封装了很多预先定义好的函数在里面,比如动画animate、hide、show,比如获取元素等。

​ 简单理解:就是一个JS文件,里面对我们原生js代码进行了封装,存放到里面,这样我们可以快速高速的使用这些封装好的功能了。

​ 比如jQuery,就是为了快速方便的操作DOM,里面基本都是函数(方法)。

常见的JavaScript库

(1)jQuery

(2)Prototype

(3)YUI

(4)Dojo

(5)Ext JS

(6)移动端的zepto

这些库都是对原生JavaScript的封装,内部都是用JavaScript实现的,我们主要学习的是jQuery。

1.2、jQuery的概念

jQuery是一个快速、简洁的JavaScript库,其设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。

​ j就是JavaScript;Query查询;意思就是查询js,把js中的DOM操作做了封装,我们可以快速的查询使用里面的功能。

jQuery封装了JavaScript常用的功能代码,优化了DOM操作、事件处理、动画设计和Ajax交互。

学习jQuery本质:就是学习调用这些函数(方法)。

jQuery出现的目的是加快前端人员的开发速度,我们可以非常方便的调用和使用它,从而提高开发效率。

1.3、jQuery的优点

​ (1)轻量级。核心文件才几十kb,不会影响页面加载速度

​ (2)跨浏览器兼容,基本兼容了现在主流的浏览器

​ (3)链式编程、隐式迭代

​ (4)对事件、样式、动画支持,大大简化了DOM操作

​ (5)支持插件扩展开发。有着丰富的第三方的插件,例如:树形菜单、日期控件、轮播图等

​ (6)免费、开源

二、jQuery的基本使用

2.1、jQuery的下载

​ 官网地址:https://jquery.com/

​ 版本:

​ (1)1x:兼容IE 678等低版本浏览器,官网不在更新

​ (1)2x:不兼容IE 678等低版本浏览器,官网不在更新

​ (1)3x:兼容IE 678等低版本浏览器,是官方主要更新维护的版本

​ 各个版本的下载:https://code.jquery.com/

2.3、jQuery的入口函数
$(function () {
  ... // 此处是页面DOM加载完成的入口
  });
$(document).ready(function () {
    ... // 此处是页面DOM加载完成的入口
})

​ 1.等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成,jQuery帮我们完成了封装。

​ 2.相当于原生js中的DOMContentLoaded.

​ 3.不同于原生js中的load事件是页面文档、外部的js文件、css文件、图片加载完毕才执行内部代码。

​ 4.更推荐使用第一种方式。

<!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>jQuery的基本使用</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: blue;
        }
    </style>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <script>
        // $('div').hide();
        // 1.等着页面DOM加载完毕再去执行js代码
        // 复杂写法
        // $(document).ready(function () {
        //     $('div').hide();
        // })
        // 简单写法
        $(function () {
            $('div').hide();
        })
    </script>
    <div></div>
</body>
</html>
2.4、jQuery的顶级对象$

​ 1.$是jQuery的别称,在代码中可以使用jQuery代替$,但一般为了方便,通常都直接使用$。

​ 2.$是jQuery的顶级对象,相当于 原生JavaScript中的window,把元素利用$包装成jQuery对象,就可以调用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>jQuery顶级对象</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: red;
        }
    </style>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <script>
        // 1.$是jQuery的别称(另外的名字)
        // $(function () {
        //     alert(11);
        // });
        jQuery(function () {
            alert(11);
            // $('div').hide();
            // jQuery('div').hide();
        });
        // 2.$同时也是jQuery的顶级对象
    </script>
    <div></div>
</body>
</html>
2.5、jQuery对象和DOM对象

​ DOM对象与jQuery对象之间是可以相互转换的。

​ 因为原生js比jQuery更大,原生的一些属性和方法jQuery没有给我们封装,要想使用这些属性和方法需要把jQuery对象转换为DOM对象才能使用。

1.DOM对象转换为jQuery对象:$(DOM对象)

$('div')

2.jQuery对象转换为DOM对象(两种方式)

$('div')[index] 	index是索引号
$('div').get(index)		index是索引号

三、jQuery常用API

3.1、jQuery基础选择器

​ 原生JS获取元素方式很多,很杂,而且兼容性情况不一致,因此jQuery给我们做了封装,使获取元素统一标准。

$("选择器")	// 里面选择器直接写css选择器即可,但是要加引号

3.2、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>jQuery基本和层级选择器</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div>我是div</div>
    <div class="nav">我是nav</div>
    <p>我是p</p>
    <ol>
        <li>我是ol的</li>
        <li>我是ol的</li>
        <li>我是ol的</li>
        <li>我是ol的</li>
    </ol>
    <ul>
        <li>我是ul的</li>
        <li>我是ul的</li>
        <li>我是ul的</li>
        <li>我是ul的</li>
    </ul>
    <script>
        $(function () {
            console.log($(".nav"));
            console.log($("ul li"));
        })
    </script>
</body>
</html>

四、jQuery选择器

4.1、jQuery设置样式
$('div').css('属性','值')
4.2、隐式迭代(重要)

​ 遍历内部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>jQuery隐式迭代</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <ul>
        <li>相同的操作</li>
        <li>相同的操作</li>
        <li>相同的操作</li>
    </ul>
    <script>
        // 1.获取四个div元素
        console.log("div");
        // 2.给四个div设置背景颜色为粉色,jquery对象不能使用style
        $('div').css("background","pink");
        // 3.隐式迭代就是把匹配的所有元素内部进行遍历循环,给每个元素添加css这个方法
        $("ul li").css("color","red");
    </script>
</body>
</html>
4.3、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>jQuery筛选选择器</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <ul>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
    </ul>
    <ol>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
    </ol>
    <script>
        $(function () {
            $("ul li:first").css("color","red");
            $("ul li:eq(2)").css("color","blue");
            $("ol li:odd").css("color","skyblue");
            $("ol li:even").css("color","pink");
        })
    </script>
</body>
</html>
4.4、jQuery筛选方法(重点)

重点记住:parent()、children()、find()、siblings()、eq()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=q">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery筛选方法(上)</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div class="grandpa">
        <div class="father">
            <div class="son"></div>
        </div>
    </div>
    <div class="nav">
        <p>我是第一个p</p>
        <div>
            <p>我是第二个p</p>
        </div>
    </div>
    <script>
        // 注意一下,都是方法,带括号
        $(function () {
            // 查找父级,返回的是最近一级的父级元素
            console.log($(".son").parent());
            // 查找子级,返回的是最近一级的子级元素,利用children(),类似于子代选择器ul>li
            $('.nav').children('p').css("color","blue");
            // 可以选择里面的所有孩子,包括儿子和孙子,find()类似于后代选择器
            $('.nav').find('p').css("color","red");
        })
    </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>jQuery筛选方法(下)</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <ol>
        <li>你好</li>
        <li>你好</li>
        <li class="item">你好</li>
        <li>你好</li>
        <li>你好</li>
        <li>你好</li>
    </ol>
    <ul>
        <li>哆啦A梦</li>
        <li>哆啦A梦</li>
        <li>哆啦A梦</li>
        <li>哆啦A梦</li>
        <li>哆啦A梦</li>
        <li>哆啦A梦</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(index).css("color","red");
            // 3.判断是否有某个类名
            console.log($("div:first").hasClass("current"));
            console.log($("div:last").hasClass("current"));
        })
    </script>
</body>
</html>

五、jQuery样式操作

5.1、操作css方法

​ jQuery可以使用css方法来修改简单元素样式;也可以操作类,修改多个样式。

​ 1、参数只写属性名,则是返回属性值

$(this).css("color");

​ 2、参数是属性名、属性值、逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号。

$(this).css("color","red");

​ 3、参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开,属性可以不用加引号

$(this).css({"color":"white","font-size":"20px"});
<!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>jQuery操作样式之css方法</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div></div>
    <script>
        $(function () {
            // 1.参数只写属性名,返回的是属性名
            console.log($("div").css("width")); //200px
            // 2.将width的属性值改为300px
            // $("div").css("width","300px");
            // $("div").css("width",300);
            // 属性名一定要加引号
            // $("div").css(height,"300px");
            $("div").css({
                width: 400,
                height: 400,
                backgroundColor: "red"
                // 如果是复合属性则必须采取驼峰命名法,如果值不是数字,则需要加引号
            })
        })
    </script>
</body>
</html>
5.2、设置类样式方法

​ 作用等同于以前的classList,可以操作类样式,注意操作类里面的参数不要加点。

​ 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>jQuery操作样式之类操作</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
            margin: 100px auto;
            transition: all 0.5s;
        }
        .current{
            background-color: red;
            transform: rotate(360deg);
        }
    </style>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div ></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>
5.3、类操作与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>jQuery类操作不形象原先类</title>
    <style>
        .one{
            width: 200px;
            height: 200px;
            background-color: pink;
            transition: all 0.5s;
        }
        .two{
            transform: rotate(720deg);
        }
    </style>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div class="one"></div>
    <script>
        // 原生js中className会覆盖元素原先里面的类名
        // var one = document.querySelector('.one');
        // one.className('two');
        // 这个addClass相当于追加类名,不影响以前的类名
        $(".one").addClass("two");
        // $(".one").removeClass("two");
    </script>
</body>
</html>

六、jQuery效果

jQuery给我们封装了很多了很多动画效果,最为常见的如下:

6.1、显示效果

​ 1、显示语法规范

show([speed],[easing],[fn])

​ 2、显示参数

​ (1)参数都可以省略,无动画直接显示

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

6.2、隐藏效果

​ 1、隐藏语法规范

hide([speed],[easing],[fn]);

​ 2、隐藏参数

​ (1)参数都可以省略,无动画直接显示

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

6.3、切换效果

​ 1、切换语法规范

toggle([speed],[easing],[fn]);

​ 2、切换参数

​ (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>jQuery效果之显示与隐藏</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</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,function () {
                    alert(1);
                });
            })
        })
    </script>
</body>
</html>
6.4、下滑效果

​ 1、下滑效果语法规范

slideDown([speed],[easing],[fn]);

​ 2、下滑效果参数

​ (1)参数都可以省略,无动画直接显示

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

6.5、上滑效果

​ 1、上滑效果语法规范

slideUp([speed],[easing],[fn]);

​ 2、上滑效果参数

​ (1)参数都可以省略,无动画直接显示

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

6.6、切换效果

​ 1、切换效果语法规范

slideToggle([speed],[easing],[fn]);

​ 2、切换效果参数

​ (1)参数都可以省略,无动画直接显示

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

6.7、事件切换
hover([over,]out)

(1)over:鼠标移到元素上要触发的函数(相当于mouseenter)

(2)out:鼠标移出元素要触发的函数(相当于mouseleave)

6.8、动画队列及其停止排队方法

​ 1、动画或效果队列

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

​ 2、停止排队

stop()

(1)stop()方法用于停止动画或效果。

(2)注意:stop()写到动画或者效果的前面,相当于停止结束上一次的动画。

<!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>新浪下拉菜单</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        li{
            list-style: none;
        }
        a{
            text-decoration: none;
            color: black;
        }
        .nav{
            margin: 100px; 
        }
        .nav>li{
            float: left;
            height: 30px;
            width: 120px;
            /* margin: 0 auto; */
            margin-right: 10px;
            text-align: center;
            line-height: 30px;
            background-color: pink;
        }
        .nav ul{
            display: none;
            border-left:1px solid orange;
            border-right:1px solid orange;
        }
        .nav ul > li{
            border-bottom:1px solid orange;
        }
    </style>
    <script src="../jquery-3.3.1/jquery-3.3.1.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>
            </ul>
        </li>
        <li>
            <a href="#">邮箱</a>
            <ul>
                <li>
                    <a href="">免费邮箱</a>
                </li>
                <li>
                    <a href="">VIP邮箱</a>
                </li>
                <li>
                    <a href="">企业邮箱</a>
                </li>
                <li>
                    <a href="">新浪邮箱客户端</a>
                </li>
            </ul>
        </li>
    </ul>
    <script>
        $(function () {
            // $(".nav>li").mouseover(function () {
                    // 鼠标经过
            //     $(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").stop().slideToggle();
            })
        })
    </script>
</body>
</html>
6.9、淡入效果

​ 1、淡入效果语法规范

fadeIn([speed],[easing],[fn]);

​ 2、淡入效果参数

​ (1)参数都可以省略,无动画直接显示

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

6.10、淡出效果

​ 1、淡出效果语法规范

fadeOut([speed],[easing],[fn]);

​ 2、淡出效果参数

​ (1)参数都可以省略,无动画直接显示

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

6.11、淡入淡出切换效果

​ 1、淡入淡出切换效果语法规范

fadeToggle([speed],[easing],[fn]);

​ 2、淡入淡出切换效果参数

​ (1)参数都可以省略,无动画直接显示

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

6.12、淡入淡出效果

​ 1、淡入淡出效果语法规范

fadeTo([speed],opacity,[easing],[fn]);

​ 2、淡入淡出效果参数

​ (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>jQuery效果之淡入淡出</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</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(2).click(function () {
                    // 修改透明度 fadeTo()
                    $("div").fadeTo(1000,0.5);
                })
            })
        </script>
</body>
</html>
6.13、自定义动画animate

​ 1、语法

animate(params,[speed],[easing],[fn]);

​ 2、参数

​ (1)params:想要更改的样式属性,以对象形式传递,必须写,属性名可以不用带引号,如果是复合属性则需要采取驼峰命名法borderLeft。其余参数都可以省略。

​ (2)speed:三种预定速度之一的字符串("slow","normal",or "fast")或表示动画时长的毫秒数值(如:1000)。

​ (3)easing:(Optional)用来指定切换效果,默认是"swing",可用参数"linear"。

​ (4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次。

七、jQuery属性操作

7.1、设置或获取元素固有属性值prop()

​ 所谓元素固有属性就是元素本身自带的属性,比如元素里面的href,比如元素里面的type.

1.获取属性语法

prop('属性')

2.设置属性语法

prop("属性","属性值")
7.2、设置或获取元素自定义属性值attr()

​ 用户自己给元素添加的属性,我们称为自定义属性,比如给div添加index = "1"

1.获取属性语法

attr("属性") // 类似原生getAttribute()

2.设置属性语法

attr("属性","属性值") // 类似原生setAttribute()

​ 改方法也可以获取H5自定义属性

7.3、数据缓存 data()

​ data()方法可以在指定的元素上存取数据,并不会修改DOM元素结构,一旦页面刷新,之前存放的数据都将被移除。

1.附加数据语法

data("name","value") // 向被选元素附加数据

2.获取数据语法

data("name") // 向被选元素获取数据

同时,还可以读取HTML5自定义属性data-index,得到的是数字型

<!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>全选反选</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .wrap table{
            width: 200px;
            margin: 100px auto;
            border:1px solid #000;
            border-spacing: 0;
        }
        thead th{
            text-align: center;
            border-right: 1px solid #000;
            border-bottom: 1px solid #000;
        }
        tbody td{
            text-align: center;
            border-right: 1px solid #000;
            border-bottom: 1px solid #000;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <table>
            <thead>
                <tr>
                    <th>
                        <input type="checkbox" id="j_cdAll">
                    </th>
                    <th>商品</th>
                    <th>价钱</th>
                </tr>
            </thead>
            <tbody id="j_tb">
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>苹果</td>
                    <td>3.5元/斤</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>梨</td>
                    <td>2.5元/斤</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>榴莲</td>
                    <td>35元/斤</td>
                </tr>
            </tbody>
        </table>
    </div>
    <script>
        $(function () {
            // 通过全选判断单选框状态,全选框状态发生改变
            $("#j_cdAll").change(function () {
                // 在控制台打印全选框状态
                // console.log($(this).prop("checked"));
                // 将全选框状态赋值给单选框
                $("#j_tb input").prop("checked",$(this).prop("checked"))
                
            })
            // 通过单选框状态判断全选框状态,单选框全选中,全选框也选中
            $("#j_tb input").change(function () {
                // 如果单选框的长度等于单选框全部长度
                if($("#j_tb input:checked").length === $("#j_tb input").length){
                    // 全选框按钮就选中
                    $("#j_cdAll").prop("checked",true);
                }else{
                    // 否则全选框按钮不选中
                    $("#j_cdAll").prop("checked",false);
                }
            })
        })
    </script>
</body>
</html>

八、jQuery内容文本值

主要针对元素的内容还有表单的值操作。

8.1、普通元素内容html() (相当于原生inner HTML)
html()	//获取元素的内容
html("内容")	//设置元素的内容
8.2、普通元素文本内容text() (相当于原生inner Text)
text()	// 获取元素的文本内容
text("文本内容")	//设置元素的文本内容
8.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>jQuery内容文本值</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div>
        <span>我是内容</span>
    </div>
    <input type="text" value="请输入内容"> 
    <script>
        // 获取设置元素内容 html()
        console.log($("div").html());
        console.log($("div").html("123"));
        // 获取设置元素文本内容 text()
        console.log($("div").text());
        console.log($("div").text("123"));
        // 获取设置元素表单的值 val()
        console.log($("input").val());
        console.log($("input").val("456"));
    </script>
</body>
</html>
8.4、parents('选择器')可以返回指定祖先元素
8.5、通过toFixed(2)保留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>商品数量加减</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        a{
            text-decoration: none;
        }
        .form{
            position: relative;
            width: 100px;
            height: 20px;
            margin: 100px auto;
            border: 1px solid #000;
        }
        .decrement{
            position: absolute;
            top: 0;
            left: 0px;
            width: 20px;
            text-align: center;
            /* border-right: 1px solid #000; */
        }
        .itxt{
            position: absolute;
            top: 0;
            left: 25px;
            width: 50px;
            text-align: center;
        }
        .increment{
            position: absolute;
            top: 0;
            left: 75px;
            width: 30px;
            text-align: center;
            /* border-left: 1px solid #000; */
        }
    </style>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <!-- 商品单价 -->
    <div class="p-price">¥12.60</div>
    <!-- 商品数量加减 -->
    <div class="form">
        <a href="javascript:;" class="decrement">-</a>
        <input type="text" class="itxt" value="1">
        <a href="javascript:;" class="increment">+</a>
    </div>
    <!-- 商品总价 -->
    <div class="p-sum">¥12.60</div>
    <script>
        $(function () {
            // 增加数量
            $(".increment").click(function () {
                // 获取商品的数量
                var n = $(this).siblings(".itxt").val();
                // 点击加号商品数量也增加
                n++;
                // 将增加后数量赋值给数量值
                $(this).siblings(".itxt").val(n);
                // 获取商品的单价
                var p = $(this).parent().siblings(".p-price").html();
                // 将获取的单价¥12.60剪切为商品价格12.60
                p = p.substr(1);
                console.log(p);
                // 将获取到的单价和数量相乘赋值给商品总价,并保留两位小数
                $(this).parent().siblings(".p-sum").html("¥" + (p * n ).toFixed(2));  
                })
            // 减少数量
            $(".decrement").click(function () {
                var n = $(this).siblings(".itxt").val();
                if(n==1){
                    return false;
                }
                n--;
                $(this).siblings(".itxt").val(n);
                var p = $(this).parent().siblings(".p-price").html();
                p = p.substr(1);
                console.log(p);
                $(this).parent().siblings(".p-sum").html("¥" + (p * n ).toFixed(2));  
            })
        	// 用户直接修改文本框的值
            $(".itxt").change(function () {
                // 先得到用户输入文本框的值
                var n = $(this).val();
                // 当前商品的单价
                var p = $(this).parent().siblings(".p-price").html();
                // 将获取的单价¥12.60剪切为商品价格12.60
                p = p.substr(1);
                // 将获取到的单价和数量相乘赋值给商品总价,并保留两位小数
                $(this).parent().siblings(".p-sum").html("¥" + (p * n ).toFixed(2));  
            })
        })
    </script>
</body>
</html>

九、jQuery元素操作

主要是遍历、创建、添加、删除元素操作。

9.1、遍历元素

​ jQuery隐式迭代是对同一类元素做了同样的操作,如果想要同一类元素做不同操作,就需要用到遍历。

语法1:

$("div").each(function(index,domEle) {xxx;})

1.each()方法遍历匹配的每一个元素,主要用DOM处理,each每一个

2.里面的回调函数有2个参数:index是每个元素的索引号,demEle是每个DOM元素对象,不是jquery对象

3.所以要想使用jquery()方法,需要给这个dom元素转换为jquery对象 $(domEle)

<!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>jQuery遍历元素</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
        $(function () {
            // 针对于同一元素做不同操作,需要用到遍历元素(类似于for 但相比较for更强大)
            var arr = ["red","pink","blue"];
            var sum = 0;
            // 利用each()方法遍历元素
            $("div").each(function (i,domEle) {
                // 回调函数第一个参数一定是索引号,可以自己指定索引号名称
                console.log(i);
                // 回调函数第二个参数一定是dom元素对象,也是自己命名
                console.log(domEle);
                // domEle.css("color");dom对象没有css方法
                $(domEle).css("color",arr[i]);
                sum += parseInt($(domEle).text());
            })
            console.log(sum);
            
        })
    </script>
</body>
</html>

执行结果:

语法2:
$.each(object,function (index,element) {xxx; })

1.$.each()方法可用于遍历任何对象。主要用于数据处理,比如数组,对象

2.里面的函数有2个参数:index是每个元素的索引号;element遍历内容

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

})
9.2、添加元素

​ 1.内部添加

(1)element.append("内容")

​ 把内容放入匹配元素内部最后面,类似原生appendChild。

(2)element.prepend("内容")

​ 把内容放入匹配元素内部最前面

​ 2、外部添加

(1)element.after("内容")	// 把内容放入目标元素后面
(2)element.before("内容")	// 把内容放入目标元素前面

1)内部添加元素:生成之后,它们是父子关系。

(2)外部添加元素:生成之后,它们是兄弟关系。

9.3、删除元素
element.remove()	// 删除匹配的元素(本身)
element.empty()		// 删除匹配的元素集合中所有的子节点
element.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>创建添加删除元素</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
</head>
<body>
    <ul>
        <li>1</li>
    </ul>
    <div class="test">我是第一个</div>
    <script>
        $(function () {
            // 1.创建元素
            var li = $("<li>2</li>");
            // 2.添加元素

            // (1) 内部添加
            // $("ul").append(li); 内部添加并且放到内容的最后面
            $("ul").prepend(li); // 内部添加并且放到内容的最前面

            // (2) 外部添加
            var div = $("<div>我是后妈生的</div>");
            // $(".test").after(div);
            $(".test").before(div);
            // 3.删除元素
            $("ul").remove();   // 可以删除匹配的元素
            $("ul").empty();    // 可以删除匹配的元素里面的子节点 孩子
            $("ul").html("");   // 可以删除匹配的元素里面的子节点 孩子
        })
    </script>
</body>
</html>

十、jQuery事件

1、jQuery事件注册

1.1、单个事件注册

语法:

element.事件(function () {})
$("div").click(function () { 事件处理程序})

其他事件和原生基本一致。

比如mouseover、mouseout、blur、focus、change、keydown、keyup、resize、scroll等

2、jQuery事件处理

2.1、事件处理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");
})
<!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>事件处理</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: blue;
        }
        .current{
            background-color: blueviolet;
        }
    </style>
</head>
<body>
    <div></div>
    <script>
        $(function () {
            // 1.单个事件注册
            // $("div").click(function () {
            //     $(this).css("background","red");
            // })
            // $("div").mouseenter(function () {
            //     $(this).css("background","skyblue");
            // })

            // 2.事件处理on
            // $("div").on({
            //     mouseenter : function () {
            //         $(this).css("background","red");
            //     },
            //     click : function () {
            //         $(this).css("background","skyblue");
            //     },
            //     mouseleave : function () {
            //         $(this).css("background","orange");
            //     }
            // });
        	// 3.通过鼠标经过和鼠标离开自动切换
            $("div").on("mouseenter mouseleave" , function () {
                $(this).toggleClass("current");
            })
        })
    </script>
</body>
</html>

on()方法优势2:

​ 可以事件委派操作,事件委派的定义就是,把原来加给子元素身上的事件绑定在父元素身上,就是把事件委派给父元素。

$('ul').on('click','li',function () {
    alert('hello world!');
});

​ 在此之前有bind(),live(),delegate()等方法来处理事件绑定或者事件委派,最新版本的请用on代替他们。

on()方法优势3:

​ 动态创建的元素,click()没有办法绑定事件,on()可以给动态生成的元素绑定事件。

<!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>事件处理</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: blue;
        }
        .current{
            background-color: blueviolet;
        }
    </style>
</head>
<body>
    <div></div>
    <ul>
        <li>123</li>
        <li>123</li>
        <li>123</li>
        <li>123</li>
    </ul>
    <ol></ol>
    <script>
        $(function () {
            // 1.事件处理on
            // (1) on可以绑定1个或者多个事件处理程序
            $("div").on("mouseenter mouseleave" , function () {
                $(this).toggleClass("current");
            });
            // (2) on可以实现事件委托(委派)
            $("ul").on("click","li",function () {
                alert(1);
            });
            // click是绑定在ul身上的,但是触发的对象是ul里面的li
            // (3) on可以给未来动态创建的元素绑定事件
            // $("ol li").click(function() {
            //     alert(2);    // 无法做点击事件
            // })
            $("ol").on("click","li",function () {
                alert(2);
            })
            var li = $("<li>我是后来创建的</li>");
            $("ol").append(li);
        })
    </script>
</body>
</html>

2.2、事件处理off()解绑事件

​ off()方法可以移除通过on()方法添加的事件处理程序。

$("p").off()	// 解绑p元素所有事件处理程序
$("p").off("click")		// 解绑p元素上面的点击事件,后面的off是侦听函数名
$("ul").off("click","li");	// 解绑事件委托

​ 如果有的事件只想触发一次,可以使用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>事件解绑</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
    <script>
        $(function () {
            $("div").on({
                click:function () {
                    console.log('我被点击了');
                },
                mouseover:function() {
                    console.log('我被鼠标经过了');
                }
            });
            $("ul").on("click","li",function () {
                alert(1);
            });
            // 1.事件解绑off()
            $("div").off(); //这个是解除了div上的所有事件
            $("div").off("click");  // 这个是解除了div上的点击事件
            $("ul").off("click","li");  // 这个是解绑了ul下所有li的点击事件
            // 2.one() 只能触发事件一次
            $("p").one("click",function () {
                alert(2);
            });
        })
    </script>
</head>
<body>
    <div></div>
    <ul>
        <li>123</li>
        <li>123</li>
        <li>123</li>
    </ul>
    <p>你好</p>
</body>
</html>

​ 2.3、自动触发事件trigger()

​ 有些事件希望自动触发,比如轮播图自动播放功能跟点击右侧按钮一致,可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发。

1.element.click()	// 第一种简写形式
2.element.trigger("type")	//第二种自动触发模式
// 案例:
$("p").on("click",function () {
    alert("hi");
});
$("p").trigger("click");	// 此时自动触发点击事件,不需要鼠标点击
3.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>自动触发事件</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
    <script>
        $(function () {
            $("div").click(function () {
                alert(1);
            });
            // 自动触发事件
            // 1.元素.事件()
            // $("div").click();   会触发元素的默认行为
            // 2.元素.trigger("事件")
            $("div").trigger("click");  // 会触发元素的默认行为
            $("input").trigger("focus");
            // 3.元素.triggerHandler("事件") 就是不会触发元素的默认行为
            $("div").triggerHandler("click");
            $("input").on("focus",function () {
                $(this).val("你好吗?");
            });
        })
    </script>
</head>
<body>
    <div></div>
    <input type="text">
</body>
</html>
3、jQuery事件对象

​ 事件被触发,就会有事件对象的产生。

element.on(events,[selector],function(event) {})

阻止默认行为:event.preventDefault() 或者 return false

阻止冒泡:event.stopPropagation()

<!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>事件对象</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
    <script>
        $(function () {
            $(document).on("click",function () {
                console.log("点击了document");
            })
            $("div").on("click",function () {
                console.log("点击了div");
                event.stopPropagation();
            })
        })
    </script>
</head>
<body>
    <div></div>
</body>
</html>

十一、jQuery对象拷贝

如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用$.extend()方法。

语法:

$.extend([deep],target,object1,[objectN])

1.deep:如果设为true为深拷贝,默认为false浅拷贝

2.target:要拷贝的目标对象

3.object1:待拷贝到第一个对象的对象

<!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>jQuery对象拷贝</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <script>
        $(function () {
            var targetObj = {
                id: 2,
                msg: {
                    sex: '男'
                }
            };
            var obj = {
                id: 1,
                name: "andy",
                msg: {
                    age:18
                }
            }
            // $.extend(targetObj,obj);
            // console.log(targetObj);  会覆盖targetObj,里面原来的数据
            // // 1.浅拷贝把原来对象里面的复杂数据类型地址拷贝给目标对象
            // targetObj.msg.age = 20;
            // console.log(targetObj);
            // console.log(obj);    obj里面的msg()方法中的age也变为20
            // 2.深拷贝把里面的数据完全复制一份给目标对象,如果里面有不冲突的属性,会合并在一起
            $.extend(true,targetObj,obj);
            targetObj.msg.age = 20;
            console.log(targetObj);
            console.log(obj); 
        })
    </script>
</head>
<body>
    
</body>
</html>

十二、多库共存

问题概述

​ jQuery使用$作为标识符,随着jQuery的流行,其它js库也会用$作为标识符,这样一起作用会引起冲突。

客观需求

​ 需要一个解决方案,让jQuery和其他的js库不存在冲突,可以同时存在,这就叫做多库共存。

jQuery解决方案:

​ 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>多库共存</title>
    <script src="../jquery-3.3.1/jquery-3.3.1.min.js"></script>
    <script>
        $(function () {
            function $(ele){
                return document.querySelector(ele);
            }
            console.log($("div"));
            // 1.如果$符号冲突,我们就是用jquery
            jQuery.each();
            // 2.让jquery释放对$控制权让用户自己决定
            var s = jQuery.noConflict();
            console.log(s("span"));
            s.each();
        })
    </script>
</head>
<body>
    <div></div>
    <span></span>
</body>
</html>

执行效果:

十三、jQuery插件

​ jQuery功能比较有限,想要更复杂的特效效果,可以借助于jQuery插件完成。

​ 注意:这些插件也是依赖与jQuery来完成的,所以必须要先引入jQuery文件,因此也称为jQuery插件。

jQuery插件常用的网站:

​ 1.jQuery插件库:http://www.jq22.com/

​ 2.jQuery之家:http://www.htmleaf.com/

jQuery插件使用步骤:

​ 1.引入相关文件。(jQuery文件和插件文件)

​ 2.复制相关html、css、js(调用插件)

jQuery插件演示

​ 1、瀑布流

​ 2、图片懒加载(图片使用延迟加载在可提高网页下载速度,他也能帮助减轻服务区负载)

​ 当我们页面滑动到可视区域,在显示图片

​ 我们使用jquery插件库EasyLazyload。注意,此时的js引入文件和js调用必须写到DOM元素(图片)最后面。

​ 3、全屏滚动(fullpage.js)

​ gitHub:https://github.com/alcarotrigo/fullPage.js

​ 中文翻译网站:http://www.dowebok.com/demo/2014/77/

十四、jQuery尺寸、位置

1、jQuery尺寸

​ (1)以上参数为空,则是获取相应值,返回的是数字型。

​ (2)如果参数是数字,则是修改相应值。

​ (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>jQuery位置</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: red;
            padding: 10px;
            border: 1px solid #000;
            margin: 2px;
        }
    </style>
    <script src="../jquery-3.3.1/jquery-3.3.1.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() outHeight() 获取设置元素 width和height + padding + border 大小
            console.log($("div").outerWidth());

            // 4.outerWidth(true) outHeight(true) 获取设置元素 width和height + padding + border + margin 大小
            console.log($("div").outerWidth(true));
        })
    </script>
</body>
</html>
posted @ 2020-12-16 21:46  因为遇见你  阅读(34)  评论(0编辑  收藏  举报