JQuery基本使用


一. 基本使用

  1. jquery的入口函数
$(function(){
    //页面加载后执行的入口
});

实例:通过使用入口函数的方式,将div在页面加载完毕后隐藏。

<!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-3.4.1.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <div></div> 
    <script>
        $(function(){
            $('div').hide();
        });
    </script>
</body>
</html>

2.jquery中的$符号是jquery的别称,两者等价

实例:将1中的$符号替换为jQuery后依旧可以正常运行,分别在页面中弹出不同的效果。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery-3.4.1.js"></script>
</head>
<body>
    <div></div>
    <script>
        //1.$是jquery的别称
        // $(function(){
        //     alert("hello world");
        // });

        //2.上述与下面代码一致
        // jQuery(function(){
        //     alert("hello jquery");
        // });

    </script>
</body>
</html>
  1. DOM对象和jquery对象的关系
  • 两者的方法不能交叉使用

实例:DOM对象将div隐藏需要使用的方式和jquery对象使用的方式不同

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery-3.4.1.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <div></div>
    <script>
        //1. DOM对象:使用原始js的方式获取的对象为DOM对象
        var domDiv = document.querySelector("div");
        console.dir(domDiv);
        //2.jquery对象:用jquery方式获取的对象为jquery对象,本质是把dom原始进行包装
        var jqueryDiv = $("div");
        console.dir(jqueryDiv);
        //3.两个对象只能分别使用自己的方法,不能交叉使用方法
        //domDiv.style.display="none"; //ok
        //jqueryDiv.hide();  //ok
        //domDiv.hide(); //error
        //jqueryDiv.style.display="none"; //error
    </script>
</body>
</html>
  • 两者的转换

实例:通过转换,调用对应对象的方法执行div的隐藏操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery-3.4.1.js"></script>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <div></div>
    <script>
       //1.DOM转换为jquery对象
       //(1)直接获取jquery对象
       //$("div").hide();
       //(2)已经使用原始js获取dom对象,将其转换
       //var domDiv = document.querySelector("div");
       //$(domDiv).hide();
       
       //2.jquery转为dom对象
       //$("div")[0].style.display="none";
    </script>
</body>
</html>

二. 常用API

常用的选择器

  1. jquery基本选择器

通过基本选择器可以选择符合要求的一组DOM元素

$("选择器")

//ID选择器,获取指定id元素
$("#id")
//全选择器,匹配所有元素
$("*")
//类选择器,获取同类class的元素
$(".class")
//标签选择器,获取同一类型的标签
$("div")
//并集选择器,选取多元素
$("div,p,li")
//交集选择器,选取交集元素,多个选择器直接连接在一起
$("li.current")
  1. jquery层级选择器

通过层级选择器可以选择包含有层级关系的一组DOM元素

//子代选择器,获取亲儿子层级元素,并不会获取孙子层级的元素
$("ul>li")
//后代选择器,获取后代,包括孙子
$("ul li")

实例:测试基本和层级选择器

<!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-3.4.1.js"></script>
</head>

<body>
    <div>我是div</div>
    <div class="nav">我是nav div</div>
    <p>我是p</p>
    <ol>
        <li>
            我是ol 的
            <ul>
                <li>我是ol_2 的</li>
            </ul>
        </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() {
            //获取div
            console.log($("div"));
            //获取class=”nav“
            console.log($(".nav"));
            //并集获取div和p
            console.log($("div,p"));
            //交集获取div class="nav"
            console.log($("div.nav"));
            //获取ol的直接儿子
            console.log($("ol>li"));
            //获取ol的子代,包括孙子
            console.log($("ol li"));
        })
    </script>
</body>
</html>
  1. 隐式迭代

遍历jQuery对象内部的各个DOM元素(伪数组存储)的过程叫做隐式迭代,避免了使用循环遍历的冗余方式迭代

实例:使用jquery获取全部div对象,并为各个div使用隐式迭代的方式设置背景颜色,避免使用了循环赋值的方式。

<!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-3.4.1.js"></script>
</head>

<body>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <ul>
        <li>相同的操作</li>
        <li>相同的操作</li>
        <li>相同的操作</li>
    </ul>
    <script>
        // 1. 给四个div设置背景颜色为蓝色 jquery对象不能使用style
        // 2. 隐式迭代就是把匹配的所有元素内部进行遍历循环,给每一个元素添加css这个方法
        $("div").css("background","blue");
        
        //给ul中的所有li字体颜色修改为绿色
        $("ul>li").css("color","green");
    </script>
</body>
</html>
  1. 筛选选择器

在基本选择器的基础上进一步筛选DOM元素

//选择第一个li
$("li:first")
//选择最后一个li
$("li:last")
//选择获取元素中索引号为2的元素(从0开始)
$("li:eq(2)")
//选择奇数元素
$("li:odd")
//选择偶数元素
$("li:even")

实例:通过筛选器改变li中的字体颜色

<!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-3.4.1.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变为红色
           $("ul li:first").css("color","red");
           //ul中第三个li变为蓝色
           $("ul li:eq(2)").css("color","blue");
           //ol的奇数行变为绿色
           $("ol li:odd").css("color","green");
           //ol的偶数行变为粉色
           $("ol li:even").css("color","pink");
        })
    </script>
</body>
</html>
  1. 筛选方法
  • 获取父元素,获取直接子元素,获取子元素(包括孙子)

实例:使用 parent() 获取直接父元素,使用 children() 获取直接子元素,使用 find() 获取全部子元素

<!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-3.4.1.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>
                <p>我是pp</p>
            </div>
        </div>
    </div>
    <script>
        // 注意一下都是方法 带括号
        $(function() {
            // 1. 父  parent()  返回的是 最近一级的父级元素 亲爸爸
            console.log($(".son").parent());

            // 2. 子
            // (1) 亲儿子 children()  类似子代选择器  ul>li
            //$(".nav").children("p").css("color","green");
            // (2) 可以选里面所有的孩子 包括儿子和孙子  find() 类似于后代选择器
            $(".nav").find("p").css("color","red"); 
        });
    </script>
</body>
</html>
  • 获取除自己以外的兄弟元素,获取第n个元素,判断是否有某个属性

实例:兄弟元素 siblings(),获取第n个元素 eq(index),判断是否有某个类名 hasClass()

<!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-3.4.1.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().css("color","red");

            // 2. 获取第n个元素
            //var index = 2;
            // (1) 我们可以利用选择器的方式选择
            //$("ul li:eq(2)").css("color","green");
            // (2) 我们可以利用选择方法的方式选择 更推荐这种写法
            //$("ul li").eq(index).css("color","blue");

            // 3. 判断是否有某个类名
            //console.log($("div:first").hasClass("current"));
            //console.log($("div:last").hasClass("current"));
        });
    </script>
</body>
</html>
  1. 排他思想

排他思想表示仅选择的元素发生行为的改变,而其他兄弟保持原样

实例:使用排他思想,通过隐式迭代给每个button绑定单击事件,让this指向的当前元素变化,让其余的兄弟元素剔除效果,实现排他思想。

<!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-3.4.1.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", "green");
                // 3. 其余的兄弟去掉背景颜色 隐式迭代
                $(this).siblings("button").css("background", "");
            });
        })
    </script>
</body> 
</html>

操作jquery样式

  1. 操作css

实例:使用 css() 方法操作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-3.4.1.js"></script>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <div></div>
    <script>
        // 操作样式之css方法
        $(function() {
            //1.参数只写属性名,则返回对应的属性值
            console.log($("div").css("width"));

            //2.设置一组样式
            // $("div").css("width", "300px");
            // $("div").css("width", 300); //ok //数值可不加引号
            // $("div").css(height, "300px"); //error 属性名一定要加引号,否则认定为变量

            //3.参数已对象的形式传入表示设置多组样式,其中属性名可以不加引号
            $("div").css({
                width: 400,
                height: 400,
                backgroundColor: "red"
                    // 如果是复合属性则必须采取驼峰命名法,如果值不是数字,则需要加引号
            })
        })
    </script>
</body>
</html>
  1. 设置类样式

实例:在外层定义好类样式,调用类样式的操作方法动态增添样式

  • 添加类 addClass()
  • 删除类 removeClass()
  • 切换类 toggleClass()
<!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-3.4.1.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>

操作jquery效果

  1. 显示隐藏效果
//1.显示 speed 速度,easing 切换效果 fn 回调函数
show([speed,easing,fn])
//2.隐藏
hide([speed,easing,fn])
//3.切换
toggle([speed,easing,fn])

实例:给三个按钮分别绑定单击事件,分别执行div元素的显示,隐藏和切换

<!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-3.4.1.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>
  1. 滑动效果
//1.下拉 speed 速度,easing 切换效果 fn 回调函数
slideDown([speed,easing,fn])
//2.上拉
slideUp([speed,easing,fn])
//3.切换
slideToggle([speed,easing,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-3.4.1.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>
  1. 事件切换
// over 鼠标移动到元素上触发 == mouseenter
// out 鼠标移出元素要触发的函数 == mouseleave
hover([[over,] out])

实例:使用 hover() 方法实现触发下拉和上拉的功能

<!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-3.4.1.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>
  1. 动画队列的停止

用于停止动画的效果,需要将其写在触发动画的方法之前,相当于停止上一次的动画

stop()

实例:将3中的事件切换方法进行改造,实现禁止动画排队执行,将上一次的动画停止

$(".nav>li").hover(function() {
     //stop() 方法需要写在动画方法的前面
     $(this).children("ul").stop().slideToggle();
 });
  1. 淡入淡出效果

实例:点击不同的按钮,分别实现淡入,淡出,切换和改变透明度的效果

<!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-3.4.1.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>
  1. 自定义动画
// params必须以对象的形式传入
animate(params,[speed],[easing],[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>
    <script src="jquery-3.4.1.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>

jquery的属性操作

  1. 设置或获取原始固有属性值
$("a").prop("href");
  1. 设置或获取自定义属性值
$("div").attr("index");
  1. 数据缓存
$("span").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>Document</title>
    <script src="jquery-3.4.1.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"));
            });

            // 2. 元素的自定义属性 我们通过 attr()
            // console.log($("div").prop("index")); //error 不能使用prop()方法获取自定义属性
            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>
  1. 获取普通元素内容
$("div").html();
  1. 获取普通元素文本内容
$("div").text();
  1. 获取表单值
$("input").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-3.4.1.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>
  1. 获取某元素的祖先元素
  • 获取该元素的全部祖先元素列表 parents()
$(this).parents();
  • 获取某个指定的祖先元素 parents("选择器")
// 获取当前元素的祖先元素,其中该祖先元素具有 p-num 类属性
$(this).parents(".p-num");

实例:获取具有four类属性元素的全部祖先元素,获取指定的祖先元素

<!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-3.4.1.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>
  1. 遍历元素
// 常用于遍历DOM对象
$("div").each(function(index,domElm) { xxx; });  //其中domElm为DOM对象
// 常用于遍历数组和对象等,用于处理数据
$.each(object,function(index,element) { xxx; });

实例:使用上述两种方法对数据进行遍历操作

<!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-3.4.1.js"></script>
</head>

<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
        $(function() {
            // 0.隐式迭代适用于迭代对象做相同的处理
            // $("div").css("color", "red");

            // 1. each() 方法遍历元素 
            // 如果针对于同一类元素做不同操作,需要用到遍历元素(类似for,但是比for强大)
            var sum = 0;
            var arr = ["red", "green", "blue"];
            $("div").each(function(i, domEle) {
                // 回调函数第一个参数一定是索引号  可以自己指定索引号号名称
                // console.log(index);
                console.log(i);
                // 回调函数第二个参数一定是 dom元素对象 也是自己命名
                console.log(domEle);
                // domEle.css("color"); dom对象没有css方法
                $(domEle).css("color", arr[i]);
                sum += parseInt($(domEle).text());
            });
            console.log(sum);

            // 2. $.each() 方法遍历元素 主要用于遍历数据,处理数据
            // 2.1 遍历DOM对象
            $.each($("div"), function(i, ele) {
                console.log(i);
                console.log(ele);
            });
            // 2.2 遍历数组
            $.each(arr, function(i, ele) {
                console.log(i);
                console.log(ele);
            });
            // 2.3 遍历对象
            $.each({
                name: "andy",
                age: 18
            }, function(i, ele) {
                console.log(i); // 输出的是 name age 属性名
                console.log(ele); // 输出的是 andy  18 属性值
            });
        });
    </script>
</body>
</html>
  1. 元素的创建,添加和删除
  • 创建
var li = $("<li>new li</li>");
var div = $("<div>new div</div>");
  • 添加
// 内部添加,父子关系
$("ul").append(li); //后加
$("ul").prepend(li); //前加
// 外部添加,兄弟关系
$("div").after(div); //后加
$("div").before(div); //前加
  • 删除
//自杀
$("ul").remove();
//只杀里面内容,本身不删除
$("ul").empty();
$("ul").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-3.4.1.js"></script>
</head>

<body>
    <ul>
        <li>原先的li</li>
    </ul>
    <div class="test">我是原先的div</div>
    <script>
        $(function() {
            // 1. 创建元素
            var li = $("<li>我是后来创建的li</li>");
            var div = $("<div>我是后妈生的</div>");

            // 2. 添加元素
            // (1) 内部添加,添加后呈现父子关系
            // $("ul").append(li);  // 内部添加并且放到内容的最后面 
            $("ul").prepend(li); // 内部添加并且放到内容的最前面
            
            // (2) 外部添加,添加后呈现兄弟关系
            // $(".test").after(div);
            $(".test").before(div);

            // 3. 删除元素
            // $("ul").remove(); // 可以删除匹配的元素 自杀
            // $("ul").empty(); // 可以删除匹配的元素里面的子节点 孩子
            $("ul").html(""); // 可以删除匹配的元素里面的子节点 孩子
        }); 
    </script>
</body>
</html>

事件处理

  1. 单个事件的绑定
$("div").click(function(){ xxx;});
  1. on实现多个事件绑定
// 1.给多个事件绑定多个不同的处理方法
$("div").on({
    click: function(){},
    mouseenter: function(){},
    mouseleave: function(){}
});
// 2.给多个事件绑定相同的处理方法
$("div").on("click mouseenter",function(){ xxx; });
// 3.事件委派
// click事件绑定在ul身上,触发对象是ul里面的li
$("ul").on("click","li",function(){ xxx; });
// 4.动态元素的事件绑定,后添加的元素也可绑定事件
$("ul").on("click","li",function(){ xxx; });
var li = $("<li>我是后来创建的</li>");
$("ul").append(li);

实例:

<!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;
        }
        
        .current {
            background-color: purple;
        }
    </style>
    <script src="jquery-3.4.1 copy.js"></script>
</head>

<body>
    <div></div>
    <ul>
        <li>我们都是好孩子</li>
        <li>我们都是好孩子</li>
        <li>我们都是好孩子</li>
        <li>我们都是好孩子</li>
        <li>我们都是好孩子</li>
    </ul>
    <ol>

    </ol>
    <script>
        $(function() {
            // 1. 单个事件注册
            // $("div").click(function() {
            //     $(this).css("background", "purple");
            // });
            // $("div").mouseenter(function() {
            //     $(this).css("background", "skyblue");
            // });

            // 2. 事件处理on
            // (1) on可以绑定1个或者多个事件处理程序
            // $("div").on({
            //     mouseenter: function() {
            //         $(this).css("background", "skyblue");
            //     },
            //     click: function() {
            //         $(this).css("background", "purple");
            //     },
            //     mouseleave: function() {
            //         $(this).css("background", "blue");
            //     }
            // });
            // (2) 给多个事件绑定相同的处理函数,可以将各个事件以空格分隔
            $("div").on("mouseenter mouseleave", function() {
                $(this).toggleClass("current");
            });

            // (3) on可以实现事件委托(委派)
            // $("ul li").click(); //不使用委派,需要给所有的li依此绑定事件,较为麻烦
            // 此时click事件是绑定在ul身上的,但是触发的对象是ul里面的li
            $("ul").on("click", "li", function() {
                alert(11);
            });
            
            // (4) on可以给未来动态创建的元素绑定事件
            // 单个事件的绑定,不会对未来新加入的元素绑定事件
            // $("ol li").click(function() {
            //     alert(11);
            // })
            //实现对未来添加的元素动态绑定事件
            $("ol").on("click", "li", function() {
                alert(11);
            })
            var li = $("<li>我是后来创建的</li>");
            $("ol").append(li);
        });
    </script>
</body>
</html>
  1. 事件的解绑
$("div").off();  // 这个是解除了div身上的所有事件
$("div").off("click"); // 这个是解除了div身上的点击事件
$("ul").off("click", "li"); //这个是解除ul的委派事件
  1. 执行一次的事件
$("div").one("click",function(){xxx;});

实例:实现对事件全部解绑,解绑指定事件,解绑委派事件以及执行一次的事件

<!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-3.4.1 copy.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"); //这个是解除ul的委派事件
            
            // 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>
  1. 自动执行事件
// 1. 元素.事件()
$("div").click();
// 2. 元素.trigger("事件")
$("div").trigger("click");
// 3. 元素.triggerHandler("事件") 
$("div").triggerHandler("click");

实例:测试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: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
    <script src="jquery-3.4.1 copy.js"></script>
    <script>
        $(function() {
            $("div").on("click", function() {
                alert(11);
            });
            $("input").on("focus", function() {
                $(this).val("你好吗");
            });

            // 自动触发事件
            // 1. 元素.事件()
            // $("div").click();会触发元素的默认行为

            // 2. 元素.trigger("事件")
            // $("div").trigger("click");会触发元素的默认行为

            // 3. 元素.triggerHandler("事件") 就是不会触发元素的默认行为
            // $("div").triggerHandler("click");

            //默认行为测试
            //会选中焦点
            // $("input").focus();
            // $("input").trigger("focus");
            // 不会选中焦点
            $("input").triggerHandler("focus");
        });
    </script>
</head>

<body>
    <div></div>
    <input type="text">
</body>
</html>
  1. 事件对象 event
//事件被触发时,会有事件对象产生
$("div").on("click",function(event) { xxx; });

实例:使用事件对象中的方法,停止冒泡

<!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-3.4.1 copy.js"></script>
    <script>
        $(function() {
            $(document).on("click", function() {
                console.log("点击了document");
            });
            $("div").on("click", function(event) {
                // console.log(event);
                console.log("点击了div");
                //阻止冒泡
                event.stopPropagation();
            });
        });
    </script>
</head>

<body>
    <div></div>
</body>
</html>

其他操作

  1. 保留指定的小数位数 toFixed(n)
//保留2位小数
(price*num).toFixed(2)
  1. 深浅拷贝
// 默认 deep=false 为浅拷贝,target为目标对象,source为源对象
$.extend([deep],target,source);

实例:深浅拷贝细节测试

<!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-3.4.1 copy.js"></script>
    <script>
        $(function() {
            // 1.浅拷贝
            // 1.1 可以将源对象的简单元素拷贝到目标元素
            // var targetObj = {};
            // var sourceObj = {
            //     id: 1,
            //     name: "andy"
            // };
            // $.extend(targetObj,sourceObj);
            // console.log(targetObj);
            // console.log(sourceObj);

            // 1.2 若目标对象有同名简单属性则覆盖,不同名的简单属性会保留
            // var targetObj = {
            //     name: "yorick",
            //     address: "BeiJing"
            // };
            // var sourceObj = {
            //     id: 1,
            //     name: "andy"
            // };
            // $.extend(targetObj,sourceObj);
            // console.log(targetObj); //此时,name被覆盖为andy,address属性保留
            // console.log(sourceObj);

            // 1.3 若源对象中存在对象属性,则浅拷贝仅会复制其地址。
            // 两者共享同一内存,修改属性会关联影响
            // var targetObj = {};
            // var sourceObj = {
            //     id: 1,
            //     name: "andy",
            //     msg:{
            //         age:18
            //     }
            // };
            // $.extend(targetObj,sourceObj);
            // targetObj.msg.age=20; //两个对象的age均会改变
            // console.log(targetObj); 
            // console.log(sourceObj);

            // 目标对象的同名对象属性里面的值会全部覆盖
            // var targetObj = {
            //     msg:{
            //         address:"BeiJing"
            //     }
            // };
            // var sourceObj = {
            //     id: 1,
            //     name: "andy",
            //     msg:{
            //         age:18
            //     }
            // };
            // $.extend(targetObj,sourceObj);
            // console.log(targetObj); //由于传递的是地址,address属性会被覆盖
            // console.log(sourceObj);

            // 2.深拷贝
            // 深拷贝把里面的数据完全复制一份给目标对象 如果里面有不冲突的属性,会合并到一起 
            var targetObj = {
                msg:{
                    address:"BeiJing"
                }
            };
            var sourceObj = {
                id: 1,
                name: "andy",
                msg:{
                    age:18
                }
            };
            $.extend(true,targetObj,sourceObj);
            console.log(targetObj); //address和age属性均存在
            console.log(sourceObj);
        });
    </script>
</head>
<body>
</body>
</html>
  1. 解决多库冲突
1.将$改为jQuery
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>Document</title>
    <script src="jquery-3.4.1 copy.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>
  1. jquery插件库
http://www.htmleaf.com/
http://www.jq22.com/
//引入插件步骤
1.引入相关文件(jquery文件和插件文件)
2.复制相关html,css,js(调用插件)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城老湿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值