jQuery简介
jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作更加简单
write less,do more.
选择器
基础选择器
名称 | 语法构成 |
---|---|
类选择器 | $(“.class”) |
元素选择器 | $(“element”) |
ID选择器 | $(“#id”) |
子元素选择器 | $(“parent > child”) |
后代元素选择器 | $(“parent child”) |
类,元素,ID
JavaScript实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="box">类选择器</div>
<div class="box">类选择器</div>
<span>元素选择器</span>
<a id="it" href="#">ID选择器</a>
<script>
// 类选择器
var div1 = document.getElementsByClassName("box")[0]
var div2 = document.getElementsByClassName("box")[1]
div1.innerHTML = "JS类选择器1"
div2.innerHTML = "JS类选择器2"
// 元素选择器
var span = document.getElementsByTagName("span")[0]
span.innerHTML = "JS元素选择器"
// ID选择器(ID是唯一的)
var a = document.getElementById("it");
a.innerHTML = "JSID选择器"
</script>
</body>
jQuery实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div class="box">类选择器</div>
<div class="box">类选择器</div>
<span>元素选择器</span>
<a id="it" href="#">ID选择器</a>
<script>
// $就是jQuery的缩写,他就代表了jQuery
// 类选择器
$(".box").html("jQuery类选择器")
// 元素选择器
$("span").html("jQuery元素选择器")
// ID选择器
$("#it").html("jQuery ID选择器")
</script>
</body>
</html>
子元素选择器,后代元素选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul class="topnav">
<li>Item 1</li>
<li>
<ul>
<li>child item 1</li>
<li>child item 2</li>
<li>child item 3</li>
</ul>
</li>
<li>Item 3</li>
</ul>
<script>
// jQuery子元素选择器
//选择所有指定“parent”元素中指定的"child"的直接子元素
// .css(样式属性,样式属性值)
// $(".topnav > li").css("border","3px solid red")
// jQuery后代元素选择器
//选择所有指定“parent”元素中指定的"child"的后代元素
$(".topnav li").css("border","3px solid red")
</script>
</body>
</html>
属性选择器
语法构成 | 描述 |
---|---|
[name=“value”] | 完美匹配 |
[name|=“value”] | 前缀 |
[name*=“value”] | 包含 |
[name^=“value”] | 开头 |
[name$=“value”] | 结尾 |
[name~=“value”] | 空格 |
属性选择器有很多操作方式(6个)
[name=“value”]
选择指定属性是给定值的元素
name: 选中的属性
value: 属性值
<body>
<div>
<input type="radio" name="user" value="username">
<span>name</span>
</div>
<div>
<input type="radio" name="user" value="age">
<span>age</span>
</div>
<script>
// 利用属性选择器:选中第一个input,修改对应的span文本:name -> username
// next(): 找到同级的下一个标签
// html() === innerHTML
$("input[value='username']").next().html("useranme");
</script>
</body>
[name|=“value”]
选择指定属性值等于给定字符串或以该字符串为前缀(该字符串后跟一个连字符“-” )的元素
<!DOCTYPE html>
<html lang="en">
<head>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<a href="#" alt="abc">abc</a>
<a href="#" alt="abc-d">abc-d</a>
<a href="#" alt="abcd">abcd</a>
<script>
// 1. 属性选择器,完美匹配或者前缀匹配(-)
$('a[alt|="abc"]').css("border","2px solid red")
</script>
</body>
</html>
[name*=“value”]
选择指定属性具有包含一个给定的子字符串的元素。(选择给定的属性是以包含某些值的元素)
<body>
<a href="#" alt="abc">abc</a>
<a href="#" alt="abc-defg">abc-defg</a>
<a href="#" alt="abcdefg">abcdefg</a>
<a href="#" alt="defg">defg</a>
<script>
// 属性选择器,匹配包含关系即可 匹配abc
$("a[alt*='abc']").css("border","2px solid red")
</script>
</body>
</html>
[name~=“value”]
选择指定属性用空格分隔的值中包含一个给定值的元素
<body>
<input type="text" name="abcdefg">
<input type="text" name="abc defg">
<input type="text" name="defgabchi">
<script>
// 属性选择器,空格隔开的独立的单词可以匹配 匹配abc
$("input[name~='abc']").css("border","2px solid red")
</script>
</body>
[name$=“value”]
选择指定属性是以给定值结尾的元素。这个比较是区分大小写的
<body>
<input name="abc-defg" />
<input name="abc defg" />
<input name="defgabc" />
<script>
// 属性选择器,匹配给定结尾的字符串 匹配abc
$("input[name$='abc']").css("border","2px solid red")
</script>
</body>
[name^=“value”]
选择指定属性是以给定字符串开始的元素
<body>
<input name="abc-defg" />
<input name="abc defg" />
<input name="defgabc" />
<script>
// 属性选择器,匹配开头元素 匹配abc
$("input[name^='abc']").css("border","2px solid red")
</script>
</body>
jQuery扩展选择器
语法构成 | 描述 |
---|---|
:eq(index) | 在匹配的集合中选择索引值为index的元素。 |
:even | 选择索引值为偶数的元素 |
:odd | 选择索引值为奇数的元素 |
:first | 选择第一个匹配的元素 |
:last | 选择最后一个匹配的元素 |
:gt(index) | 选择匹配集合中所有大于给定index(索引值)的元素。 |
:lt(index) | 选择匹配集合中所有小于给定index(索引值)的元素。 |
:eq(index)
在匹配的集合中选择索引值为index的元素。
温馨提示
index下标计算是从0开始的
<body>
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
<script>
// jquery 扩展选择器::eq(index) index:下标从0开始 选中第三个li标签
$("li:eq(2)").css("border","2px solid red")
</script>
</body>
:even
选择所引值为偶数的元素
特别注意
这是基于0的索引,所以
:even
选择器是选择第一个元素,第三个元素,依此类推在匹配。
<body>
<table border="1">
<tr>
<td>Row with Index #0</td>
</tr>
<tr>
<td>Row with Index #1</td>
</tr>
<tr>
<td>Row with Index #2</td>
</tr>
<tr>
<td>Row with Index #3</td>
</tr>
</table>
<script>
// jquery扩展选择器,even偶数选择器 注意,从0开始
$("tr:even").css("background-color","red")
</script>
</body>
:odd
选择索引值为奇数元素
特别注意
这是基于0的索引,所以
:odd
选择器是选择第二个元素,第四个元素,依此类推在匹配。
<body>
<table border="1">
<tr>
<td>Row with Index #0</td>
</tr>
<tr>
<td>Row with Index #1</td>
</tr>
<tr>
<td>Row with Index #2</td>
</tr>
<tr>
<td>Row with Index #3</td>
</tr>
</table>
<script>
// jquery扩展选择器,even偶数选择器 注意,从0开始
$("tr:odd").css("background-color","red")
</script>
</body>
:first
选择第一个匹配的元素
<body>
<table border="1">
<tr>
<td>Row 1</td>
</tr>
<tr>
<td>Row 2</td>
</tr>
<tr>
<td>Row 3</td>
</tr>
</table>
<script>$("tr:first").css("background-color", "red");</script>
</body>
:last
选择最后一个匹配的元素
<body>
<table border="1">
<tr>
<td>Row 1</td>
</tr>
<tr>
<td>Row 2</td>
</tr>
<tr>
<td>Row 3</td>
</tr>
</table>
<script>$("tr:last").css("background-color", "red");</script>
</body>
:gt(index)
选择匹配集合中所有大于给定index(索引值)的元素。
<body>
<table border="1">
<tr>
<td>TD #0</td>
<td>TD #1</td>
<td>TD #2</td>
</tr>
<tr>
<td>TD #3</td>
<td>TD #4</td>
<td>TD #5</td>
</tr>
<tr>
<td>TD #6</td>
<td>TD #7</td>
<td>TD #8</td>
</tr>
</table>
<script>
$("td:gt(4)").css("backgroundColor", "yellow");
</script>
</body>
:lt(index)
选择匹配集合中所有索引值小于给定index参数的元素
<body>
<table border="1">
<tr>
<td>TD #0</td>
<td>TD #1</td>
<td>TD #2</td>
</tr>
<tr>
<td>TD #3</td>
<td>TD #4</td>
<td>TD #5</td>
</tr>
<tr>
<td>TD #6</td>
<td>TD #7</td>
<td>TD #8</td>
</tr>
</table>
<script>
$("td:lt(4)").css("backgroundColor", "yellow");
</script>
</body>
DOM操作
Class操作
语法 | 描述 |
---|---|
.addClass() | 给元素添加class |
.removeClass() | 移除元素中每个匹配元素上一个,多个或全部样式 |
.toggleClass() | 存在删除,不存在添加 |
.hasClass() | 判断一个元素上是否具有某个class |
addClass()
给元素添加class,值得注意的是这个方法不会替换一个样式类名。它只是简单的添加一个样式类名到元素上
$("p").addClass("myClass");
也可以同时添加多个class
$("p").addClass("myClass1 myClass2");
removeClass()
移除元素中每个匹配元素上一个,多个或全部样式
通过class名字移除元素
$('p').removeClass('myClass yourClass')
移除全部class
$('p').removeClass()
配合addClass() 一起使用用来切换元素的样式
$('p').removeClass('myClass noClass').addClass('yourClass');
toggleClass()
这是一个开关方法,如果class存在则删除,如果class不存在则添加
$('#foo').toggleClass(className, addOrRemove);
hasClass()
判断一个元素上是否具有某个class
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>gt demo</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="mydiv" class="foo bar"></div>
<script>
var flag = $('#mydiv').hasClass('foo')
if(flag){
$('#mydiv').html("div具有foo class")
}
</script>
</body>
</html>
文本和属性操作
语法 | 描述 |
---|---|
.html() | 获取元素中的HTML内容 |
.text() | 获取元素中的HTML内容 |
.val() | 用于获取<input> 标签中的内容 |
.attr() | 获取匹配的元素的属性的值 或 设置匹配元素的一个或多个属性 |
.removeAttr() | 为匹配的元素集合中的每个元素中移除一个属性 |
html()
获取元素中的HTML内容
$('div.demo-container').html();
html()方法还可以设置元素的html内容
$('div.demo-container').html('<p>All new content. <em>You bet!</em></p>');
val()
用于获取<input>
标签中的内容
$(".input").val();
也可以设置<input>
标签内容
$(".input").val("username")
attr()
获取匹配的元素的属性的值 或 设置匹配元素的一个或多个属性
<body>
<img class="img1" src="./1.jpg" alt="小姐姐">
<img class="img2" src="" alt="">
<script>
var content = $(".img1").attr("alt");
$(".img2").attr("src","./1.jpg")
// 同时设置多个属性
$(".img2").attr({
src:"./1.jpg",
alt:"美女",
title:"小姐姐"
})
</script>
</body>
removeAttr()
为匹配的元素集合中的每个元素中移除一个属性(attribute)
img.removeAttr("title")
DOM 插入并包裹现有内容
语法 | 描述 |
---|---|
.wrap() | 在每个匹配的元素外层包上一个html元素 |
.unwrap() | 将匹配元素集合的父级元素删除,保留自身在原来的位置 |
.wrapAll() | 在所有匹配元素外面包一层HTML结构 |
.wrapInner() | 在所有匹配元素外面包一层HTML结构 |
.wrap()
在每个匹配的元素外层包上一个html元素
<body>
<p id="text">Hello</p>
<p>World</p>
<script>
// 创建一个div容器,包裹p标签
$("#text").wrap("<div class='container'></div>");
</script>
</body>
.unwrap()
将匹配元素集合的父级元素删除,保留自身在原来的位置
<body>
<div>
<p id="text">Hello</p>
</div>
<div>
<p>Hello</p>
</div>
<script>
// 删除p标签的父级元素
$("#text").unwrap();
</script>
</body>
.wrapAll()
在所有匹配元素外面包一层HTML结构
<body>
<p>齐世浩</p>
<p>好好学习</p>
<span>Hello</span>
<p>web</p>
<script>
// 将三个p标签包裹在一个容器中div
$("p").wrapAll("<div></div>");
</script>
</body>
.wrapInner()
在匹配元素里的内容外包一层结构
<body>
<p><a>Hello</a></p>
<script>
// 包裹p标签里的内容
$("p").wrapInner("<i></i>");
</script>
</body>
DOM 插入现有元素内
语法 | 描述 |
---|---|
.append() | 在每个匹配元素里面的末尾处插入参数内容 |
.prepend() | 将参数内容插入到每个匹配元素的前面(元素内部) |
.append()
在每个匹配元素里面的末尾处插入参数内容
<body>
<p>I would like to say: </p>
<script>
$("p").append("<strong>I love u</strong>");
</script>
</body>
.prepend()
将参数内容插入到每个匹配元素的前面(元素内部)
<body>
<p>,齐世浩</p>
<script>
$("p").prepend("<strong>Hello</strong>");
</script>
</body>
DOM 插入现有元素外
语法 | 描述 |
---|---|
.after() | 在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点 |
.before() | 根据参数设定,在匹配元素的前面插入内容,作为其兄弟节点 |
.after()
在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点
<body>
<p>I would like to say: </p>
<script>$("p").after("<b>Hello</b>");</script>
</body>
.before()
根据参数设定,在匹配元素的前面插入内容,作为其兄弟节点
<body>
<p>I would like to say: </p>
<script>$("p").before("<b>Hello</b>");</script>
</body>
DOM移除和替换
DOM 移除
从 DOM 树中删除元素
语法 | 描述 |
---|---|
.empty() | 从DOM中移除集合中匹配元素的所有子节点 |
.remove() | 将匹配元素集合从DOM中删除 |
.empty()
从DOM中移除集合中匹配元素的所有子节点
<body>
<div id="box">
<p>Hello</p>
<span>Wrold</span>
</div>
<script>
// 清空div中的内容:empty
$("#box").empty();
</script>
</body>
.remove()
将匹配元素集合从DOM中删除
<body>
<p>Hello</p>
<script>
$("p").remove();
</script>
</body>
DOM 替换
从 DOM 树中移除已有的内容并将其替换为新内容
语法 | 描述 |
---|---|
.replaceAll() | 用集合的匹配元素替换每个目标元素 |
.replaceWith() | 用提供的内容替换集合中所有匹配的元素 |
.replaceAll()
用集合的匹配元素替换每个目标元素
<!DOCTYPE html>
<html>
<head>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<p>Hello</p>
<script>
$("<b>World</b>").replaceAll("p");
</script>
</body>
</html>
.replaceWith()
用提供的内容替换集合中所有匹配的元素
<!DOCTYPE html>
<html>
<head>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<p>Wrold</p>
<script>
$("p").replaceWith("<div>Hello</div>");
</script>
</body>
</html>
CSS操作
大小
语法 | 描述 |
---|---|
.css | 获取和设置匹配元素的样式 |
.height() & .width() | 获取元素的当前高度值宽度值或设置元素的高度值宽度值 |
.innerHeight() & .innerWidth() | 为元素的当前计算高度值和宽度值,包括padding,但是不包括border |
.outerHeight() & .outerWidth() | 获取元素的当前宽度值和高度值,包括padding,border和选择性的margin |
.css()
获取和设置匹配元素的样式
获取样式值
<body>
<div class="box"></div>
<div class="container"></div>
<script>
// 通过.css获取当前元素的样式
var color = $(".box").css("background-color");
$(".container").css("height","200px")
$(".container").css({
width:"200px",
height:"200px",
// 如果涉及到-的形式,写成驼峰命名法:font-size -> fontSize
backgroundColor:"green"
})
</script>
</body>
.height(),.width()
获取元素的当前高度值宽度值或设置元素的高度值宽度值
<!DOCTYPE html>
<html lang="en">
<head>
<script src="./js/jquery-3.6.0.min.js"></script>
<style>
.box1{
width: 100px;
height: 100px;
background-color: red;
}
.box2{
background-color: green;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
<script>
// 获取box1宽度和高度
var width = $(".box1").width();
var height = $(".box1").height();
console.log(width,height);
// 设置box2的宽度和高度 链式调用
$(".box2").width(200).height(200);
</script>
</body>
</html>
.innerHeight(),.innerWidth()
为元素的当前计算高度值和宽度值,包括padding,但是不包括border
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
padding: 10px;
border: 5px solid red;
margin: 10px;
background: rgb(255, 140, 0);
}
</style>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div></div>
<script>
// innerHeight和innerWidth获取一个元素的宽度高度+padding
var currentHeight = $("div").innerHeight();
var currentWidth = $("div").innerWidth();
console.log(currentHeight,currentWidth);
</script>
</body>
</html>
.outerHeight(),.outerWidth()
获取元素的当前宽度值和高度值,包括padding,border和选择性的margin
<!DOCTYPE html>
<html lang="en">
<head>
<script src="./js/jquery-3.6.0.min.js"></script>
<style>
.box{
width: 200px;
height: 200px;
background-color: red;
padding: 20px;
border: 10px solid green;
margin: 30px;
}
</style>
</head>
<body>
<div class="box"></div>
<script>
// 获取一个div的宽度高度+padding+border
var height1 = $(".box").outerHeight();
var width1 = $(".box").outerWidth();
console.log(height1,width1); // 260 260
// 获取一个div的宽度高度+padding+border+margin
var height2 = $(".box").outerHeight(true);
var width2 = $(".box").outerWidth(true);
console.log(height2,width2); // 320 320
</script>
</body>
</html>
位置
语法 | 描述 |
---|---|
.offset() | 获取元素的当前坐标,或设置每一个元素的坐标,坐标相对于文档 |
.position() | 获取元素的当前坐标,相对于offset parent 的坐标 |
.scrollLeft(), & .scrollTop() | 获取元素的当前水平和垂直滚动条的位置。设置每个匹配元素的水平和垂直滚动条位置 |
.offset()
获取元素的当前坐标,或设置每一个元素的坐标,坐标相对于文档
获取位置
<!DOCTYPE html>
<html>
<head>
<style>
*{
margin: 0;
padding: 0;
}
p {
margin: 10px;
}
</style>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<p class="text1">Hello</p>
<p class="text2"></p>
<script>
var offset = $(".text1").offset();
$(".text2").html("left: " + offset.left + ", top: " + offset.top);
</script>
</body>
</html>
设置位置
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
background-color: red;
position: relative;
}
</style>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div></div>
<script>
$("div").offset({ top: 100, left: 100 });
</script>
</body>
</html>
.position()
获取元素的当前坐标,相对于offset parent
的坐标
温馨提示
.position()
方法可以取得元素相对于父元素的偏移位置。与.offset()
不同,.offset()
是获得该元素相对于documet
的当前坐标 当把一个新元素放在同一个容器里面另一个元素附近时,用.position()
更好用。
获取位置
<!DOCTYPE html>
<html>
<head>
<style>
*{
margin: 0;
padding: 0;
}
.container{
width: 300px;
height: 200px;
border: 2px solid #000;
margin-left: 100px;
position: relative;
}
.box {
width: 100px;
height: 100px;
padding: 15px;
background-color: red;
position: absolute;
left: 10px;
top: 10px;
}
</style>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div class="container">
<div class="box"></div>
</div>
<p class="text1"></p>
<p class="text2"></p>
<script>
var position = $(".box").position();
var offset = $(".box").offset();
$(".text1").text("left: " + position.left + ", top: " + position.top);
$(".text2").text("left: " + offset.left + ", top: " + offset.top);
</script>
</body>
</html>
.scrollLeft(), .scrollTop()
获取元素的当前水平和垂直滚动条的位置。设置每个匹配元素的水平和垂直滚动条位置
<!DOCTYPE html>
<html>
<head>
<style>
.container {
background: #CCCCCC;
border: 3px solid #666666;
margin: 5px;
padding: 5px;
width: 200px;
height: 200px;
overflow: auto;
}
p {
margin: 10px;
padding: 5px;
border: 2px solid #666;
width: 1000px;
height: 1000px;
}
</style>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div class="container">
<h1>itbaizhan</h1>
<p>sxt</p>
</div>
<span class="text"></span>
<script>
$(".container").scrollLeft(300);
var scrollLeft = $(".container").scrollLeft();
console.log(scrollLeft);
</script>
</body>
</html>
事件
绑定事件处理器
语法 | 描述 |
---|---|
.on() | 在选定的元素上绑定一个或多个事件处理函数 |
.one() | 为元素的事件添加处理函数。处理函数在每个元素上每种事件类型最多执行一次 |
.off() | 移除一个事件处理函数,移除on事件处理器 |
.on()
在选定的元素上绑定一个或多个事件处理函数
$("#button").on("click", function(event){
console.log("事件处理器")
});
事件委托
$("#ul").on("click", "li", function(event){
console.log($(this).text());
});
.one()
为元素的事件添加处理函数。处理函数在每个元素上每种事件类型最多执行一次
$("#btn").one("click", function() {
console.log("这是一个只能触发一次的事件.");
});
.off()
移除一个事件处理函数,移除on事件处理器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<button id="btn1">添加事件按钮</button>
<button id="btn2">删除事件按钮</button>
<button id="btn3">按钮</button>
<script>
function aClick() {
console.log("点击事件")
}
$("#btn1").on("click",function () {
$("#btn3").on("click", aClick);
});
$("#btn2").on("click",function () {
$("#btn3").off("click", aClick);
});
</script>
</body>
</html>
鼠标事件
语法 | 描述 |
---|---|
.click() | 为 JavaScript 的"click" 事件绑定一个处理器,或者触发元素上的 “click” 事件 |
.hover() | 将二个事件函数绑定到匹配元素上,分别当鼠标指针进入和离开元素时被执行 |
.mouseenter() | 鼠标进入事件(不冒泡) |
.mouseleave() | 鼠标离开事件(不冒泡) |
.mousemove() | 鼠标滑动事件 |
.mouseover() | 鼠标进入事件 (冒泡) |
.mouseout | 鼠标进入事件(冒泡) |
.click()
为 JavaScript 的"click" 事件绑定一个处理器,或者触发元素上的 “click” 事件
$("#btn").click(function() {
alert("点击事件");
});
.hover()
将二个事件函数绑定到匹配元素上,分别当鼠标指针进入和离开元素时被执行
$("li").hover(
// 滑入
function () {
console.log("滑入")
},
// 滑出
function () {
console.log("滑出")
}
);
.mouseenter()
鼠标进入事件
$("div").mouseenter(function(){
console.log("鼠标进入事件");
})
.mouseleave()
鼠标离开事件
$("div").mouseleave(function(){
console.log("鼠标进入事件");
})
.mousemove()
鼠标滑动事件
$("div").mousemove(function(){
console.log("鼠标进入事件");
})
.mouseover()
鼠标进入事件(注:支持事件冒泡)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
<style>
.container{
width: 200px;
height: 200px;
background-color: red;
}
.box{
width: 100px;
height: 100px;
background-color: green;
}
</style>
</head>
<body>
<div class="container">
<div class="box"></div>
</div>
<script>
$(".container").mouseover(function(){
console.log("鼠标进入事件container");
})
$(".box").mouseover(function(){
console.log("鼠标进入事件box");
})
</script>
</body>
</html>
.mouseout()
鼠标离开事件(注:支持事件冒泡)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
<style>
.container{
width: 200px;
height: 200px;
background-color: red;
}
.box{
width: 100px;
height: 100px;
background-color: green;
}
</style>
</head>
<body>
<div class="container">
<div class="box"></div>
</div>
<script>
$(".container").mouseout(function(){
console.log("鼠标离开事件container");
})
$(".box").mouseout(function(){
console.log("鼠标离开事件box");
})
</script>
</body>
</html>
表单事件
语法 | 描述 |
---|---|
.focus() | 为 JavaScript 的 “focus” 事件绑定一个获取焦点处理函数,或者触发元素上的 “focus” 事件 |
.blur() | 为 “blur” 事件绑定一个失去焦点处理函数 |
.change() | 为JavaScript 的 “change” 事件绑定一个表单改变处理函数 |
.submit() | 当用户提交表单时,就会在这个表单元素上触发submit事件。它只能绑定在<form> 元素上 |
.focus()
为 JavaScript 的 “focus” 事件绑定一个获取焦点处理函数,或者触发元素上的 “focus” 事件
$('#input').focus(function() {
alert('获得焦点事件');
});
.blur()
为 “blur” 事件绑定一个失去焦点处理函数
$('#other').click(function() {
$('#target').blur();
});
.change()
为JavaScript 的 “change” 事件绑定一个表单改变处理函数
$('.target').change(function() {
alert('内容改变');
});
.submit()
当用户提交表单时,就会在这个表单元素上触发submit事件。它只能绑定在<form>
元素上
$('#target').submit(function() {
alert('表单提交事件');
});
键盘事件
语法 | 描述 |
---|---|
.keydown() | 添加键盘按下事件 |
.keypress() | 添加键盘事件 (相当于kedown和keyup合体) |
.keyup() | 添加键盘抬起事件 |
.keydown()
添加键盘按下事件
<body>
<input type="text" class="username">
<script>
$(".username").keydown(function(){
console.log("键盘");
})
</script>
</body>
.keypress()
添加键盘事件
<body>
<input type="text" class="username">
<script>
$(".username").keypress(function(){
console.log("键盘");
})
</script>
</body>
.keyup()
添加键盘抬起事件
<body>
<input type="text" class="username">
<script>
$(".username").keyup(function(){
console.log("键盘");
})
</script>
</body>
浏览器事件
.resize()
添加浏览器窗口发生变化触发事件
<body>
<script>
$(window).resize(function(){
console.log("改变浏览器尺寸");
})
</script>
</body>
.scroll()
浏览器滚动事件
<body>
<script>
$(window).scroll(function(){
console.log("滚动");
})
</script>
</body>
事件对象
语法 | 描述 |
---|---|
event.type | 获取事件类型 |
event.target | 获取当前元素对象(指向触发事件元素) |
event.currentTarget | 获取当前元素对象(指向添加事件的元素) |
event.preventDefault() | 如果调用这个方法,默认事件行为将不再触发。 |
event.stopPropagation() | 防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数 |
event.type
获取事件类型
$("#btn").click("click",function(e){
console.log(e.type);
})
event.target
获取当前元素对象
$("#btn").click("click",function(e){
console.log(e.target);
})
event.currentTarget
获取当前元素对象
温馨提示
target:指向触发事件元素
currentTarget:指向添加事件的元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
<style>
div{
width: 100px;
height: 100px;
background-color: red;
}
</style>
</head>
<body>
<div id="container">
<button id="btn">按钮</button>
</div>
<script>
$("#container").click("click",function(e){
console.log("container",e.currentTarget);
console.log("container",e.target);
})
$("#btn").click("click",function(e){
console.log("btn",e.currentTarget);
console.log("btn",e.target);
})
</script>
</body>
</html>
event.preventDefault()
如果调用这个方法,默认事件行为将不再触发。
<a href="https://itbaizhan.com">itbaizhan</a>
<script>
$("a").click("click",function(e){
e.preventDefault();
})
</script>
event.stopPropagation()
防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数
<!DOCTYPE html>
<html lang="en">
<head>
<script src="./js/jquery-3.6.0.min.js"></script>
<style>
div{
width: 100px;
height: 100px;
background-color: red;
}
</style>
</head>
<body>
<div>
<button>按钮</button>
</div>
<script>
$("div").click("click",function(e){
console.log("div");
})
$("button").click("click",function(e){
e.stopPropagation();
console.log("button");
})
</script>
</body>
</html>
jQuery遍历
语法 | 构成 |
---|---|
.map() | 通过一个函数匹配当前集合中的每个元素,产生一个包含新的jQuery对象 |
.each() | 遍历一个jQuery对象,为每个匹配元素执行一个函数 |
.get() | 通过jQuery对象获取一个对应的DOM元素 |
.map()
通过一个函数匹配当前集合中的每个元素,产生一个包含新的jQuery对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul>
<li>列表1</li>
<li>列表2</li>
<li>列表3</li>
<li>列表4</li>
</ul>
<script>
$("li").map(function(index,ele){
console.log(index,ele);
})
</script>
</body>
</html>
.each()
遍历一个jQuery对象,为每个匹配元素执行一个函数
<!DOCTYPE html>
<html lang="en">
<head>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
</ul>
<script>
/*
jQuery遍历
each
函数类型的参数:
index:每个元素的下标
element:每个元素
对象类型的区分:
jquery:S.fn.init(4) [li, li, li, li, prevObject: S.fn.init(1)]
js:原始的元素效果
*/
$("li").each(function(index,element){
console.log(index,element);
if(index == 2){
element.style.color = "red"
}
})
</script>
</body>
</html>
温馨提示
each和map的返回值不同,map返回一个新的数组,each返回原始数组,区别不大,一般想用哪个就用哪个
.get()
通过jQuery对象获取一个对应的DOM元素
<!DOCTYPE html>
<html lang="en">
<head>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
</ul>
<script>
// 通过get获取列表中的其中一个元素
// 下标从0开始
$("li").get(1).innerHTML = "我是一个全新的item"
/*
为什么要有js和jQuery对象的相互转换
解:因为他们的方法和属性是不能互相调用的
1. js对象转换成jquery对象:$(lis)
2. jquery对象转换成js对象
1. 获取一个元素:get();
2. 获取每一个元素:each map
*/
console.log($("li").get(1));
</script>
</body>
</html>
jQuery树遍历
语法 | 构成 |
---|---|
.children() | 获得子元素,可以传递一个选择器参数 |
.find() | 寻找后代元素 |
.next() | 取得元素紧邻的后面同辈元素 |
.parent() | 取得元素的父元素 |
.siblings() | 获得元素的兄弟元素,可以传递一个选择器参数 |
.children()
获得子元素,可以传递一个选择器参数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul class="first">
<li>item 1</li>
<li>
<ul class="secode">
<li>child item 1</li>
<li>child item 2</li>
<span>child span</span>
</ul>
</li>
<li>item 3</li>
</ul>
<script>
$(".first").children().css("border","1px solid red")
$(".first").children("li").css("border","1px solid red")
</script>
</body>
</html>
.find()
寻找后代元素
温馨提示
.find()
和.children()
方法是相似的,但后者只是再DOM树中向下遍历一个层级(注:就是只查找子元素,而不是后代元素)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul class="first">
<li>item 1</li>
<li>
<ul class="secode">
<li>child item 1</li>
<li>child item 2</li>
<span>child span</span>
</ul>
</li>
<li>item 3</li>
</ul>
<script>
$(".first").find("li").css("border","1px solid red")
</script>
</body>
</html>
.next()
取得元素紧邻的后面同辈元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div>Hello</div>
<p>内容</p>
<span>元素</span>
<script>
$("div").next().css("border","2px solid red")
</script>
</body>
</html>
.parent()
取得元素的父元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div>
<p>Hello</p>
</div>
<script>
$("p").parent().css("border","2px solid red")
</script>
</body>
</html>
.siblings()
获得元素的兄弟元素,可以传递一个选择器参数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div>
<p>Hello1</p>
<p>Hello2</p>
<span>World</span>
<p class="text">Hello3</p>
<p>Hello4</p>
<p>Hello5</p>
</div>
<script>
$(".text").siblings().css("border","2px solid red")
$(".text").siblings("p").css("border","2px solid red")
</script>
</body>
</html>
jQuery动画
语法 | 描述 |
---|---|
.show() & hide() | 显示 & 隐藏 |
.fadeIn() & .fadeOut() | 淡入 & 淡出 |
.slideDown() & .slideUp() | 滑动显示 & 滑动隐藏 |
.animate() | 自定义动画 |
.show()
执行显示动画
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/jquery-3.6.0.min.js"></script>
<style>
div{
width: 100px;
height: 100px;
background-color: red;
display: none;
}
</style>
</head>
<body>
<button>动画</button>
<div></div>
<script>
$("button").click(function(){
$("div").show(1000)
})
</script>
</body>
</html>
.hide()
执行隐藏动画
$("button").click(function(){
$("div").hide(1000)
})
.fadeIn()
通过淡入的方式显示匹配元素。
$("button").click(function () {
$("div").fadeIn(1000);
});
.fadeOut()
通过淡出的方式显示匹配元素
$("button").click(function () {
$("div").fadeOut(1000);
});
用滑动动画显示一个元素
$("button").click(function () {
$("div").slideDown(1000);
});
.slideUp()
用滑动动画隐藏一个元素
$("button").click(function () {
$("div").slideUp(1000);
});
jQuery提供了一系列的动画基本方法,同时也提供了自定动画方案.animate()
.animate()
执行自定义动画
$("button").click(function () {
$("div").animate({
width: "200px",
opacity: 0.5
}, 1500);
});
### .hide()
执行隐藏动画
```js
$("button").click(function(){
$("div").hide(1000)
})
.fadeIn()
通过淡入的方式显示匹配元素。
$("button").click(function () {
$("div").fadeIn(1000);
});
.fadeOut()
通过淡出的方式显示匹配元素
$("button").click(function () {
$("div").fadeOut(1000);
});
用滑动动画显示一个元素
$("button").click(function () {
$("div").slideDown(1000);
});
.slideUp()
用滑动动画隐藏一个元素
$("button").click(function () {
$("div").slideUp(1000);
});
jQuery提供了一系列的动画基本方法,同时也提供了自定动画方案.animate()
.animate()
执行自定义动画
$("button").click(function () {
$("div").animate({
width: "200px",
opacity: 0.5
}, 1500);
});
- 选择器
- 基础选择器 类选择器 元素选择器 ID选择器 子元素选择器 后代元素选择器
- 属性选择器 完美匹配 包含 前缀 开头 结尾 空格
- jQuery扩展选择器 eq even odd first last gt lt
- DOM操作
- Class操作 addClass() removeClass() toggleClass() hasClass()
- 文本操作 html() text() val()
- 属性操作 attr() removeAttr()
- DOM 插入并包裹现有内容 .wrap() .unwrap() .wrapAll() .wrapInner()
- DOM 插入现有元素内 .append() .prepend()
- DOM 插入现有元素外 .after() .before()
- DOM 移除 .empty() .remove()
- DOM 替换 .replaceAll() .replaceWith()
- CSS操作
- 尺寸 .css() .height(),.width() .innerHeight(),.innerWidth() .outerHeight(),.outerWidth()
- 位置 .offset() .position() .scrollLeft() .scrollTop()
- 事件处理
- 绑定事件处理器 .on() .one() .off()
- 鼠标事件 .click() .hover() .mouseenter() .mouseleave() .mousemove() .mouseover() .mouseout()
- 表单事件 .focus() .blur() .change() .submit()
- 键盘事件 .keydown() .keypress() .keyup()
- 浏览器事件 .resize() .scroll()
- 事件对象 event.type event.target event.currentTarget event.preventDefault() event.stopPropagation()
- 遍历
- 列表遍历 .map() .each()
- 列表中获得一个JS对象的DOM元素 .get()
- 树遍历(关系) .children() .find() .next() .parent() .siblings()
- 动画
- .show() .hide() .fadeIn() .fadeOut() .slideDown() .slideUp() .animate()