建议在有js基础上看以下内容

一、jquery概述

1. 定义

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

2. 优点

①轻量级。核心文件才几十kb,不会影响页面的加载速度。
②跨越浏览器兼容。基本兼容了目前的主流的浏览器
③链式编程、隐式迭代。简化了代码量
④对事件、样式、动画的支持,大大简化DOM操作
⑤支持插件扩展开发。有这丰富第三方的插件,例如:树形菜单、日期控件、轮播图等
⑥免费、开源

3. 版本及使用步骤

目前3X版本是官方主要更新维护的版本,不兼容IE678
使用步骤:下载、引入jQuery文件,即可使用

4. jQuery的入口函数

①$(function(){
 			...			//此处是页面DOM加载完成的入口
 		});
 	②$(document).ready(function(){
 			...			//此处是页面DOM加载完成的入口
 		});

常用第一种方式

使用入口函数,等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完,相当于原生js中的DOMContentLoaded,有了入口函数就能把js代码写到结构之前了

5. jQuery顶级对象 $

(1)在代码中 $ 是jQuery的别称,可以相互替换
(2)$ 是jQuery的顶级对象,相当于原生js中的window,把DOM元素利用 $ 包装成jQuery对象,就能调用jQuery的方法
(3)jQuery对象和DOM对象的区别:
①利用元素js获取过来的对象为DOM对象
②利用jQuery方法获取的就是jQuery对象,其本质是利用$把DOM对象包装成jQuery对象(以伪数组的形式存储)
③jQuery对象只能使用jQuery的属性和方法,DOM对象只能使用原生js的属性和方法
(4)DOM对象与jQuery对象之间的转换
①DOM对象转jQuery对象

$("div") //$("DOM对象")

②jQuery对象转DOM对象(两种方法)

$("div")[index]//index为索引号
$("div").get(index)

二、jQuery常用的API

1. 获取元素

1.1jQuery基础选择器

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

名称

用法

id选择器(获取指定id的元素)

$("#id")

全选选择器(匹配所有元素)

$("*")

类选择器(获取同一类class元素)

$(".class")

标签选择器(获取同一类标签所有元素)

$(“div”)

交集选择器(获取交集元素)

$(“li.current”)

并集选择器(获取多个元素)

$(“div,p,li”)

补充:
$(this)不加引号,表示当前元素

1.2jQuery层级选择器

  • 子代选择器
    $(“ul>li”) //获取亲子级元素
  • 后代选择器
    $(“ul li”) //所有后代元素

1.3隐式迭代(※)
遍历内部元素(伪数组形式存储)的过程,即 给匹配到的元素进行内部循环遍历,执行相应的方法,而不用再自己进行遍历

<div>哈哈</div>
    <div>哈哈</div>
    <div>哈哈</div>
    <div>哈哈</div>
    <ul>
        <li>相同的操作</li>
        <li>相同的操作</li>
        <li>相同的操作</li>
    </ul>
    <script>
        //1.获取4个div元素
        console.log($("div"));
        //2.给四个div设置背景颜色 jquery对象不能使用style
        $("div").css('background','pink');
        //3.隐式迭代就是把匹配到的所有元素内部进行遍历循环,给每一个元素添加css这个方法
        //前提是做相同的操作
        $("ul li").css("color","red");
    </script>

1.4jQuery筛选选择器

语法

用法

:first (第一个元素)

$(“li:first”)

:last(最后一个元素)

$(“li:last”)

:eq(index) (对应索引号的元素)

$(“li:eq(2)”)

:odd (索引号为奇数)

$(“li:odd”)

:even(索引号为偶数)

$(“li:even”)

补充:
针对复选框的一个筛选选择器
:checked 查找被选中的表单元素

1.5jQuery筛选方法

语法

用法

.parent() (查找父级)

$(“li”).parent()

.children(selector) (亲子级,类似子代选择器)

$(“ul”).children(“li”)

.find(selector)(后代选择器)

$(“ul”).find(“li”)

.siblings(selector)(兄弟选择器)

$(".first").siblings(“li”)

.eq(index) (索引号为index的元素)

$(“li”).eq(2)

补充: 得到当前元素的索引号:
① $ (this).index()
必须是同一组元素,关系为兄弟关系
② $.each()遍历(后面介绍)

补充:
筛选祖父级元素 parents(“选择器”)

1.6jQuery排他思想
给当前元素设置样式,其余兄弟元素清除样式

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

2.3.重复了$(this),可利用链式编程,简化代码

1.7链式编程
作用:简化代码量
1.6的2\3合并为

$(this).css("backgroundColor","red").siblings().css("backgroundColor","");

2. jQuery样式操作

2.1操作css方法
用css()来修改简单元素样式,或操作类,修改多个样式
①参数只写属性名,为返回属性值(带单位)

$(this).css("color")

②参数是(“属性名”,“属性值”)是设置一组样式,属性值为数字可不带单位和引号

$(this).css("color","red")
$(this).css("width",100)

③参数是对象形式,分布设置多个样式,属性可不加引号,各样式逗号隔开

$(this).css({
	color:"red",
	width:100
});

补充:复合属性,名字要驼峰命名
比如:backgroundColor:“red”

2.2设置类样式方法
类似于原生js中的classList,可以操作类样式且不覆盖原来的类名
①添加类addClass()
②移除类removeClass()
③切换类toggleClass()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div {
            width: 150px;
            height: 150px;
            background-color: pink;
            margin: 100px auto;
            transition: all 0.5s;
        }

        .current {
            background-color: red;
            transform: rotate(360deg);
        }
    </style>
    <script src="../jquery.min.js"></script>
</head>
<body>
    <div class="current"></div>
    <script>
        //1.添加类addClass()
        $("div").click(function () {
           $(this).addClass("current");
      	})

        //2.移除类removeClass
        $("div").click(function () {
        	$(this).removeClass("current");
        })

        //3.切换类toggleClass
        $("div").click(function () {
            $(this).toggleClass("current");
        })
    </script>
</body>
</html>

3.jQuery效果

jquery封装了一些常见的动画效果,包括显示与隐藏、滑动、淡入与淡出、自定义动画

3.1显示隐藏效果
①显示show([s,[e],[fn]])
②隐藏hide([s,[e],[fn]])
③切换toggle([s,[e],[fn]])

参数(可不写):
s:为速度(“slow”,“normal”,“fast”)或者可写毫秒数(如:1000);
e:用来指定切换效果,默认“swing”(慢-快-慢),还有“linear”(匀速)
fn:回调函数,在动画完成时执行的函数

3.2滑动效果
①向上滑动slideUp([s,[e],[fn]])
②向下滑动slideDown([s,[e],[fn]])
③切换slideToggle([s,[e],[fn]])

3.3事件切换
hover([over,]out)
over:鼠标经过时触发
out:鼠标离开时触发
①hover(over,out)是鼠标经过和离开的复合写法
②hover(只有一个参数)那么就是鼠标经过和离开都会触发这个函数

3.4动画队列以及停止排队方法
①动画或效果队列
动画或者效果一旦触发就会执行,如果多次触发,就会造成多个动画或效果排队执行。(触发了就一定要执行完,会造成动画混乱)

②停止排队 stop()
用于停止动画效果,注意,stop()要写到动画或效果之前,表示停止上一次的动画。

<script>
        $(function () {
        	 //鼠标经过
        	$(".nav>li").mouseover(function () {
         		$(this).children('ul').slideDown(500);
         	})
       		 //鼠标离开
        	$(".nav>li").mouseout(function () {
	            $(this).children('ul').slideUp();
            })
            //1.事件切换 hover  就是鼠标经过和离开的复合写法
            $(".nav>li").hover(function () {
                 $(this).children('ul').slideDown(500);
            },function () {
                 $(this).children('ul').slideUp();
             });
            //2.事件切换 hover 如果只有一个函数 ,那么就是鼠标经过和离开都会触发这个函数
            $(".nav>li").hover(function () {
                //stop方法必须写在动画前面               $(this).children('ul').stop().slideToggle();//Toggle切换
            })

        })
    </script>

3.5淡出淡入效果
①淡入fadeIn([s,[e],[fn]])
②淡出fadeOut([s,[e],[fn]])
③切换fadeToggle([s,[e],[fn]])
④渐进方法调整到指定的不透明度

fadeTo([s,opacity,[e],[fn]])
参数opacity必须写,范围为0~1
参数s必须写

3.6自定义动画
animate(params,[s],[e],[fn])
参数params:想要修改的样式属性,以对象形式传递,必须写;其余参数可省略

$("div").animate({
	color:"red",
	width:100
});

补充:
$(document).animate(),这种写法是错的,animate()只能一般元素操作

4.jQuery属性操作

4.1设置或获取元素固有属性 prop()
固有属性:元素本身就自带的属性,比如a的href等

①获取属性
prop(“属性名”)

②设置属性值
prop(“属性名”,“属性值”)

4.2设置或获取元素自定义属性值 attr()
我们自己给元素添加的属性,称为自定义属性。比如给div添加自定义属性,

<div index="1"> </div>

①获取属性
attr(“属性”)

②设置属性值
attr(“属性”,“属性值”)

此方法也适用于获取和设置h5自定义属性data-index=“2”

4.3数据缓存 data()
data()方法可以在指定的元素上存取数据,并不会修改DOM元素结果。一旦页面刷新,之前存放的数据都会被移除。(这些数据存在数据的缓存上)
①添加数据
data(“数据名”,“值”)

②获取数据
data(“数据名”)

补充:
此方法也可读取h5自定义属性

<div data-index="1"></div>
console.log($("div").data(index"));
//注意!!!不带data-

5.jQuery内容文本值

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

(1)普通元素的内容 html()
(相当于原生innerHTML,识别标签,空格换行等)
①获取元素内容
html()

②设置属性内容
html(“内容”)

<div>
	<span>我是内容</span>
</div>
console.log($("div").html());//<span>我是内容</span>

(2)普通元素文本内容 text()
(相当于原生innerText,不识别标签、空格和换行)
①获取元素内容
text()

②设置属性内容
text(“文本内容”)

<div>
	<span>我是内容</span>
</div>
console.log($("div").html());//我是内容

6. jQuery元素操作

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

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

同一类元素做不同的操作:
(1)语法:

$(“div”).each(function(index,domEle){…});

①each()方法遍历匹配每一个元素,主要用于DOM元素操作
②两个参数,index为索引号,domEle为每一个DOM元素对象,不是jQuery对象!!!!
③要使用时要转为jquery对象 $(domEle)

(2)语法:

$.each( $(“div”).function(index,ele){…});

① $.each()可用于遍历任何对象,主要用于数据处理,比如数组对象
②若遍历的是DOM元素得到的仍是DOM对象,要转换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery.min.js"></script>
</head>
<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
        $(function () {
            // $("div").css("color", "red");
            // 如果针对于同一类元素做不同操作,需要用到遍历元素(类似for,但是比for强大)
            var sum = 0;
            // 1. each() 方法遍历元素
            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() 方法遍历元素 主要用于遍历数据,处理数据
            $.each($("div"), function(i, ele) {
                console.log(i);
                console.log(ele);
            
            });

            //遍历数组
            $.each(arr, function(i, ele) {
                console.log(i);
                console.log(ele);


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


            })
        })
      n
    </script>
</body>
</html>

6.2创建元素
语法:动态创建

$("<li></li>")

6.3添加元素
①内部添加(形成父子关系

element.append(“内容”) ;把内容放到匹配元素内部最后面,类似原生appendChild

element.prepend(“内容”) ;把内容放到匹配元素内部最前面

②外部添加(形成兄弟关系

element.after(“内容”); 把内容放目标元素后面

element.before(“内容”) ;把内容放目标元素前面

6.4删除元素

element.remove() ; 删除匹配元素本身

element.empty() ;删除匹配元素集合中所有的子节点

element.html(" "); 清空匹配元素的内容