目录
一、jQuery简介
二、引入jQuery
三、jQuery核心函数
四、jQuery对象
五、jQuery对象操作class
六、addClass补充
七、jQuery对象复制
一、jQuery简介
jQuery是一个快速的、小型的、具有丰富功能的JavaScript库。它的出现使得网页中的DOM、事件、动画、Ajax等操作变得更加简单,“写更少的代码,做更多的事儿”是jQuery一直坚信的开发理念。
库就是一组编写好的代码。这组代码中包含了一些已经定义好的对象和函数。只需要将库引入到页面中,即可直接使用这些对象和函数。
jQuery—— 一个过时的库
所有的库都是为了解决开发时的痛点而存在的。jQuery解决的问题主要有两个:简化DOM操作、解决浏览器的兼容问题。然而随着前端的发展、DOM标准的更新、IE的消亡,这两个问题已经不是什么大问题了,以及React、Vue、Angular大型框架的出现,使用jQuery的机会越来越少,所以没有学习jQuery的必要了。如果比较赶时间,可以跳过jQuery的学习。
二、引入jQuery
使用库就需要先把这组代码引入到页面中,也就是引入库。实际的操作就是通过script标签引入一个外部的js 文件,这一点所有的库都是一样的。
引入jQuery:
1.可以直接下载jQuery脚本文件,然后放入本地服务器,并在网页中通过script 标签进行引入
2.也可以通过公共的cdn引入,使用公共cdn比较简单,以字节跳动静态资源为例,要引入3.x版本的jQuery,只需要将如下代码粘贴到网页中即可:
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.js"></script>
<script>
console.log($);//判断是否成功引入jQuery
</script>
或者这个:
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js"></script>
<script>
console.log($);//判断是否成功引入jQuery
</script>
如何自己下载获取jQuery文件?
去jQuery官网(jQuery) ,点击下载,然后选择要下载的版本
三、jQuery核心函数
引入jQuery库,其实就是向网页中添加了一个新的函数$(jQuery)
- $ 是jQuery中的核心函数,jQuery的所有功能都是通过该函数来进行的
- 核心函数的功能(两种作用)
1. 将它作为对象使用,此时是一个工具类
- 在核心函数中jQuery为我们提供了多个工具方法
jQuery.isArray( ) 检查是不是数组
jQuery.isFunction( ) 检查是不是函数
jQuery.isNumeric( ) 检查是不是数值
2. 将它作为函数调用,根据不同参数的不同可以发挥不同的作用
jQuery( 函数 ) 将一个函数作为$的参数
- 这个函数会在文档加载完毕之后执行
- 相当于document.addEventListener("DOMContentLoaded",function(){ })
jQuery( 选择器 ) 将选择器字符串作为参数
- jQuery 自动去网页中查找元素
- 作用类似于 document.querySelectorAll( "...")
- 注意:通过jQuery核心函数查询的结果并不是原生的DOM对象,
而是一个经过jQuery包装过的新的对象,这个对象我们称其为jQUery对象 jQuery对象不能直接调用原生DOM对象的方法,
通常我们为jQuery对象命名时,会使用$开头(为了区分 $对象和DOM原生对象)
jQuery( DOM对象) 将DOM对象作为参数
- 可以将DOM对象转换为jQuery对象,从而使用jQuery对象的方法
jQuery( HTML代码 ) 将HTML代码作为参数
- 会根据html 代码来创建元素
注意:上述编写代码时,可以使用$ 代替jQuery
注意:在jQuery中我们设置变量时,使用var ,因为一般使用jQuery说明比较旧的项目,考虑兼容性,同时也尽量避免使用箭头函数
1. 将jQuey作为对象(工具类)调用的例子
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.js"></script>
<script>
console.log(jQuery === $);//true
function fn(){}
var num = 10
// jQuery.isFunction( ) 检查是不是函数
console.log($.isFunction(num));//false
console.log($.isFunction(fn));//true
// 可以使用typeof检查类型
console.log(typeof fn === "function");//true
</script>
2. 将其作为函数调用的例子
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>document</title>
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.js"></script>
<script>
// 将一个函数作为$的参数
// $(function(){
// alert("核心函数~~")
// })
// alert("核心函数外~~")
// 将选择器字符串作为参数
$(function(){
// 通过jQuery核心函数查询的结果可以直接调用click,因为其是jQUery对象
$("#btn01").click(function(){
// alert("你点我干嘛")
var btn = document.getElementById("btn01")
// 所以为了区分 jQUery对象和DOM原生对象,
// 我们一般为 jQUery对象 命名时,会为其加上一个$
var $btn2 = $("#btn01")
// 将DOM对象作为参数传进去,可以将DOM对象转换为jQuery对象
alert($(btn))//[object Object]
alert(btn);//[object HTMLButtonElement]
alert($btn2);//[object Object]
var $h1 = $("<h1>我是一个标题</h1>")//会根据html代码创建元素
alert($h1)//[object Object],是一个jQuery对象
$("div").append($h1)//把创建的h1加入到div中
})
})
</script>
</head>
<body>
<div></div>
<button id="btn01" type="button">点我一下</button>
</body>
四、jQuery对象
jQuery对象
- 通过jQuery核心函数获得到的对象就是jQuery对象
- jQuery对象是jQuery中定义的对象,可以将其理解为DOM对象的升级
在jQuery对象中为我们提供了很多简单易用的方法来帮助我们简化DOM操作
- jQuery对象本质上是一个DOM对象的数组(类数组)
可以通过索引获取jQuery 对象中的DOM对象,注意获取的是DOM对象
- 当我们修改jQuery对象,它会自动修改jQuery对象中的所有元素
这一特点称为jQuery的隐式迭代
- 通常情况下,jQuery对象的方法的返回值依然是一个jQuery对象
所以我们可以调用一个方法后继续调用其他的jQuery对象的方法
这一特性称为jQuery对象的 链式调用
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>document</title>
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.js"></script>
</head>
<body>
<button id="btn01">点我一下</button>
<ul>
<li id="swk">孙悟空</li>
<li id="zbj">猪八戒</li>
<li>沙和尚</li>
<li>唐僧</li>
</ul>
<script>
$("#btn01").click(function(){
var $li = $("li")//将其转换为jQuery对象
// alert($li.length)// jQuery对象本质上是一个DOM对象的数组(类数组)
// alert($li[0].textContent)// 用索引获取jQuery对象中的DOM对象,注意取出来的是DOM对象
// $li.text("哈哈哈")//修改jQuery对象中的所有元素
var text = $li.text()//读取文本,返回所有标签中的文本内容
var id = $li.attr("id")//读取属性,只返回第一个标签的属性
alert(text)//读取到其所有内容
alert(id)//swk, 读取属性,只返回第一个标签的属性
var result = $li.text("新的文本内容")
alert(result === $li);//true 通常情况下,jQuery对象的方法的返回值依然是一个jQuery对象
// $li.text("新的文本内容")返回jQuery对象,也就是$li
$li.text("新的文本内容").css("color","red")//可以调用一个方法后继续调用其他的jQuery对象的方法
// jQuery对象的 链式调用
})
</script>
</body>
五、jQuery对象操作class
addClass( )
- 为jQuery对象添加一个或多个class
- 可以接收一个回调函数作为参数,
回调函数中有两个参数:1.当前元素的索引,2.当前元素的类名
在回调函数中this 就是当前的元素,但this是一个DOM对象,不能调用jQuery对象的方法
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>document</title>
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.js"></script>
<style>
.box1{
width: 200px;
height: 200px;
background-color: #bfa;
}
.box2{
border: 10px red solid;
}
.box3{
background-color: orange;
}
</style>
<script>
$(function(){
// 为按钮绑定响应函数
$("#btn").click(function(){
// // 为box1添加class
// // addClass()可以为元素添加一个或多个class
// $(".box1").addClass(["box2","box3"])//可以使用数组的形式添加多个class
// // 与"box2 box3"相同
// // 具有隐式迭代的特点,可以为所有的box1类添加class
// addClass可以接收一个回调函数作为参数
$(".box1").addClass(function(index,className){
// alert(index + "--" + className)
// 在回调函数中this 就是当前的元素
alert(this);//[object HTMLDivElement]
// 说明this是一个DOM对象,不能调用jQuery对象的方法
if(index % 2 == 0){
// 添加box2
// this.classList.add("box2") //this是一个DOM对象
$(this).addClass("box2")//将this 转换为jQuery对象,可以调用jQuery对象的方法
}else{
// 添加box3
// this.classList.add("box3")
$(this).addClass("box3")
}
})
})
})
</script>
</head>
<body>
<button id="btn">点我一下</button>
<hr>
<div class="box1"></div>
<div class="box1"></div>
<div class="box1"></div>
</body>
hasClass( )
- 检查 jQuery对象是否含有某个class
removeClass( )
- 删除jQuery对象的指定class
toggleClass( )
- 切换jQuery对象的指定class
六、addClass补充
addClass( )的回调函数的返回值会成为当前元素的class
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>document</title>
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.js"></script>
<style>
.box1{
width: 200px;
height: 200px;
background-color: #bfa;
}
.box2{
border: 10px red solid;
}
.box3{
background-color: orange;
}
</style>
<script>
$(function(){
// 为按钮绑定响应函数
$("#btn").click(function(){
$(".box1").addClass(function(index){
// 回调函数的返回值会成为当前元素的class
// return ["box2","box3"]
if(index % 2 == 0){
return "box2"
}else{
return "box3"
}
})
})
})
</script>
</head>
<body>
<button id="btn">点我一下</button>
<hr>
<div class="box1"></div>
<div class="box1"></div>
<div class="box1"></div>
</body>
七、jQuery对象复制
clone( ) 用来复制jQuery对象
- 只会复制元素本身,不会复制元素的事件
- 在clone( )中传入一个参数true,表示不仅复制元素本身,还包括其事件、数据等
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>document</title>
<script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.js"></script>
<script>
/*
点击按钮,使得孙悟空添加到 list2 中
*/
$(function(){
$("#list li:nth-child(1)").click(function(){
alert("孙悟空")
})
// clone( )用来复制jQuery对象
// var $swk = $("#list li:nth-child(1)").clone()
// 只会复制元素本身,不会复制元素的事件,所以在list2中添加的孙悟空不会有点击出现“孙悟空"的事件
var $swk = $("#list li:nth-child(1)").clone(true)
// 在clone()中传入一个参数true,表示不仅复制元素本身,还包括其事件、数据等
var $list2 = $("#list2")
$("#btn").click(function(){
$list2.append($swk)
})
})
</script>
</head>
<body>
<button id="btn">点我</button>
<hr>
<ul id="list">
<li>孙悟空</li>
<li>猪八戒</li>
</ul>
<ul id="list2">
<li>沙和尚</li>
<li>唐僧</li>
</ul>
</body>