JQuery 介绍

jQuery 是一个开源的,免费的JavaScript库,也是目前最广泛使用的JavaScript库。

JQuery 在语法上,极大的简化了js的功能,可以更加快捷,方便的编写web功能

在开发过程当中,JQuery就是一个js文件,我们直接导入就可以了。

https://jquery.com/

<script src="jquery.min.js"></script>
<script>
    $()
</script>

JQ使用js的基本语法

JQ选择器

JQ选择器的固定格式是$(“选择器”),选择器的使用方式类似CSS

选择器

描述

$("#id")

id选择器

$(".class")

类选择器

$(“tag”)

标签选择器

$(“tag[attribute = ‘value’]”)

属性选择器

$(“tag[attribute != ‘value’]”)

属性反选择器

$(“a,b”)

并列选择器

$(“a>b”)

子选择器

$(“a b”)

后代选择器

$(“a:eq(index)”)

索引选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>p1</p>
    <p id="p2">p2</p>
    <p class="pp">p3</p>
    <p class="pp">p4</p>
    <p class="pp">p5</p>
    <p name="p_name">p6</p>
    <p>p7</p>

    <div class="d1">
        <span>1</span>
        <p>
            <span>2</span>
        </p>
    </div>
    <div class="d2">
        3
    </div>

    <script src="jquery.min.js"></script>
    <script>
        // $("#p2").css("color","red"); //id选择
        // $(".pp").css("color","green"); // class选择器,可以批量修改表情的属性
        //$("p").css("color","green") // 标签选择器,可以批量修改表情的属性

        // $("p[name='p_name']").css("color","red") // 属性选择器
        //$("p[name!='p_name']").css("color","red")  // 属性选择器取反

        // $(".d1,.d2").css("color","red")  // 并列选择器
        // $(".d1>span").css("color","red")  // 子选择器
        // $(".d1 span").css("color","red")  // 后代选择器

        $("p:eq(2)").css("color","red")  // 索引选择器取反

    </script>
</body>
</html>

注意:

1、JQ和JS一样,只有id选择器返回一个对象,其他的返回数组对象,但是JQ可以直接批量操作

2、JQ批量选择的对象一旦被循环,遍历的对象就不是jq对象,是js对象了。

var p_list = $(".pp")[1];
// p_list.css("color","red");  建议写法 $(p_list).css("color","red")
// p_list.style.color = "red";
console.log(p_list)

JQuery选择方法

方法

描述

parents

先辈,包括父

parent

父辈

siblings

兄弟

prev

上一个兄弟

next

下一个兄弟

childre

子元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        parents
        <div>
            <p>prev</p>
            <p id="p_id">
                self
                <span>child1</span>
                <span>child2</span>
                <span>child3</span>
            </p>
            <p>next</p>
            <p>brother</p>
        </div>
    </div>
    <script src="jquery.min.js"></script>
    <script>
        $("#p_id").css("border","1px black solid")
        $("#p_id").children().css("border","1px black solid")
        $("#p_id").parent().css("border","1px black solid")
        $("#p_id").parents().css("border","1px black solid")
        $("#p_id").siblings().css("border","1px black solid")
        $("#p_id").prev().css("border","1px black solid");
        $("#p_id").next().css("border","1px red solid")

    </script>
</body>
</html>

JQ修改样式

JQ主要使用.css方法进行样式修改,但是.css方法实际上比js的style方法要灵活很多。

可以通过.css方法获取标签的css参数。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            background-color: red;
        }
    </style>
</head>
<body>
    <p id="p_id">
        这是一个P
    </p>
    <script src="jquery.min.js"></script>
    <script>
        var color = $("#p_id").css("background-color");
        console.log(color)
    </script>
</body>
</html>

也可以传递新的样式,修改样式到标签上

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            background-color: red;
        }
    </style>
</head>
<body>
    <p id="p_id">
        这是一个P
    </p>
    <script src="jquery.min.js"></script>
    <script>
        var color = $("#p_id").css("background-color","blue");
        console.log(color)
    </script>
</body>
</html>

修改多个样式需要在css方法当中传入对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            background-color: red;
        }
    </style>
</head>
<body>
    <p id="p_id">
        这是一个P
    </p>
    <script src="jquery.min.js"></script>
    <script>
        $("#p_id").css({
            "background-color": "blue",
            "font-size": "80px"
        });

    </script>
</body>
</html>

.css方法会对之前的css样式进行覆盖,单独修改一个样式不方便,所有还有三个方法可以使用。

方法

描述

addClass

添加class

removeClass

移除class

toggleClass

切换class,有就删除,没有就加上

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .big{
            font-size: 32px;
        }
        .small{
            font-size: 2px;
        }
        .red{
            color: white;
            background-color: red;
        }
    </style>
</head>
<body>
    <p id="p_id">
        这是一个P
    </p>
    <button id="b_id">变大</button>
    <button id="s_id">变小</button>
    <button id="r_id">变红</button>

    <script src="jquery.min.js"></script>
    <script>
        $("#b_id").click(
            function () {
                $("#p_id").toggleClass("big")
            }
        );
        $("#s_id").click(
            function () {
                $("#p_id").toggleClass("small")
            }
        );
        $("#r_id").click(
            function () {
                $("#p_id").toggleClass("red")
            }
        );

        // $("#p_id").addClass('big');
        // $("#p_id").addClass('red');
        // $("#p_id").removeClass('red')
    </script>
</body>
</html>

JQ修改属性

JQ的属性操作拥有一个方法叫作.attr

.attr 可以获取属性值

.attr 可以设置属性值

.attr 可以设置多个属性值

removeAttr 可以移除属性值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p id="p_id">
        123
    </p>
    <script src="jquery.min.js"></script>
    <script>
        // var id = $("#p_id").attr("id");
        // var id = $("#p_id").attr("class");
        // $("#p_id").attr("class","red");
        $("#p_id").attr({
            "class":"red",
            "name": "abc"
        });
        $("#p_id").removeAttr("class")

    </script>
</body>
</html>

JQ文本操作

方法

描述

text

如果有值,覆盖当前的内容放入标签,只放入文本内容,没有传参就获取当前内容

html

如果有值,覆盖当前的内容放入标签,可以放入HTML标签,没有传参就获取当前内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p id="p_id"></p>
    <script src="jquery.min.js"></script>
    <script>
        $("#p_id").text("<span>hello world</span>");
        console.log($("#p_id").text());

        $("#p_id").html("<span>hello world</span>");
        console.log($("#p_id").text());
    </script>
</body>
</html>

JQ尺寸操作

方法

描述

width

对象的宽度,没有值,获取当前的宽度,如果有值,设置宽度

height

对象的高度,没有值,获取当前的,高度,如果有值,设置高度

offset

对象的偏移量 (左,上)

offset.top

上偏移量

offset.left

左偏移量

offset不修改标签的位置,只是获取偏移量,如果想移动对象,还需要css方法。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            width: 200px;
            height: 200px;
            background-color: royalblue;
            position: absolute;
            top: 30px;
            left: 50px;
        }
    </style>
</head>
<body>
    <div id="box">

    </div>
    <script src="jquery.min.js"></script>
    <script>
        // var offset = $("#box").offset();
        // console.log(offset)
        var offset_left = $("#box").offset().left;
        console.log(offset_left);
        $("#box").css("left","500px")
    </script>
</body>
</html>

JQ动画

显示和隐藏

三种参数

fast 快

slow 慢

毫秒

方法

描述

show()

显示

hide()

隐藏

toggle()

切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 500px;
            height: 500px;
            background-color: aquamarine;
        }
    </style>
</head>
<body>
    <div id="box">

    </div>
    <button id="btn">切换</button>
    <script src="jquery.min.js"></script>
    <script>
        $("#btn").click(
            function () {
                $("#box").toggle(3000)
            }
        )
    </script>
</body>
</html>

淡入淡出

方法

描述

fadeIn

淡入

fadeOut

淡出

fadeToggle

切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 500px;
            height: 500px;
            background-color: aquamarine;
        }
    </style>
</head>
<body>
    <div id="box">

    </div>
    <button id="btn">切换</button>
    <script src="jquery.min.js"></script>
    <script>
        $("#btn").click(
            function () {
                $("#box").fadeToggle(1000)
            }
        )
    </script>
</body>
</html>

滑入滑出

方法

描述

slideDown

滑出

slideUp

滑入

slideToggle

切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 500px;
            height: 500px;
            background-color: aquamarine;
        }
    </style>
</head>
<body>
    <div id="box">

    </div>
    <button id="btn">切换</button>
    <script src="jquery.min.js"></script>
    <script>
        $("#btn").click(
            function () {
                $("#box").slideToggle(1000)
            }
        )
    </script>
</body>
</html>

自定义动画

animate自定义动画,四个参数

参数

描述

{attr:value,attr1:“value1”} style

对象格式的css样式,就是要变化的结果样式

speed

时间戳,用来表示整个效果执行的时间(快慢)

easing

不同动画中设置动画的速度,swing linear

callback

animate动画执行完成调用的函数,回调函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            font-size: 50px;
            font-weight: 900;
            color: green;
            opacity: 1;
            display: block;
        }
    </style>
</head>
<body>
    <div id="box">
        hello world
    </div>
    <button id="btn">切换</button>
    <script src="jquery.min.js"></script>
    <script>
        $("#btn").click(
            function () {
                $("#box").animate(
                    {
                        opacity: "0",
                    },2000
                )
            }
        )
    </script>
</body>
</html>

回调函数使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            font-size: 50px;
            font-weight: 900;
            color: green;
            opacity: 1;
            display: block;
        }
    </style>
</head>
<body>
    <div id="box">
        hello world
    </div>
    <button id="btn">切换</button>
    <script src="jquery.min.js"></script>
    <script>
        $("#btn").click(
            function () {
                $("#box").animate(
                    {
                        opacity: "0"
                    },2000,function () {
                        $("#box").css("display","none")
                    }
                )
            }
        )
    </script>
</body>
</html>

JQ事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button id="btn">点击</button>
    <script src="jquery.min.js"></script>
    <script>
        $("#btn").click(
            function () {
                $("#btn").text("点击过了")
            }
        )
    </script>
</body>
</html>

注意:不要再js当中写jq,jq当中可以使用js

JQ元素操作

创建HTML元素节点

方法

描述

$("<p>")

创建元素

append

元素内尾部追加元素

prepend

元素内头部添加元素

before

元素外前边添加元素

after

元素外后边添加元素

clone

复制元素,记得加参数true来clone内容

remove

删除元素

empty

清空所有后代元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="div_id">
        <span>1</span>
    </div>
    <script src="jquery.min.js"></script>
    <script>
        var p = $("<p>这是一个p</p>");
        var div = $("#div_id");
        div.append(p.clone(true)); //放到后面
        div.prepend(p.clone(true));  //插入到前面
        div.after(p.clone(true));
        div.before(p);
        // p.remove()
        div.empty()
    </script>

</body>
</html>

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c_p{
            border-bottom: black 2px solid;
            line-height: 50px;
            font-size: 24px;
        }
        .c{
            display: inline-block;
            width: 100px;
            text-align: center;
        }
    </style>
</head>
<body>
    <p class="c_p">
        <span>城市:</span>
        <span class="c">北京</span>
        <span class="c">天津</span>
        <span class="c">上海</span>
        <span class="c">广州</span>
        <span class="c">深圳</span>
        <span class="c">张家口</span>
    </p>
    <p id="result" class="c_p" style="border: none;display: inline-block">

    </p>
    <span class="c_p" id="empty_span">清空</span>
    <script src="jquery.min.js"></script>
    <script>
        function del_self(obj) {
            $(obj).remove()
        } //删除自己

        function add_city(obj) {
            var clone_obj = $(obj).clone(true);
            clone_obj.attr("onclick","del_self(this)");
            $("#result").prepend(clone_obj)
        } //clone后添加

        $(".c").attr("onclick","add_city(this)"); // 给城市添加属性


        $("#empty_span").click(
            function () {
                $("#result").empty()
            }
        ) //清空
    </script>
</body>
</html>