jQuery 学习笔记
jQuery 手册地址
什么是 jQuery
?
- jQuery 是一款跨主流浏览器的 JavaScript 库,封装了 JavaScript 相关方法调用,简化 JavaScript 对 HTML DOM 操作。
语法
- 示例代码如下:
/**
* $:jQuery 中的函数名
* document:是参数
* $(document):把 js 中的 document 对象变成 jQuery 可以使用的对象。
* 然后调用 ready() 的函数。
* 这个 ready() 是 jQuery 中的函数
* ready() 的执行时间再页面 dom 对象加载后执行,相当于 js 中的 onload 事件
* ready(函数):表示在页面对象加载后执行
*/
// 第一种写法
$(document).ready(function () {
alert('你好,世界1')
})
// 第一种写法等价于下面写法
$(document).ready(
myinit(),
myinit2()
)
function myinit() {
alert('我是 myinit 函数')
}
function myinit2() {
alert('我是 myinit2 函数')
}
简写方式
- 示例代码如下:
/**
* 参数是一个函数
*/
$(function () {
// 页面 DOM 加载之后执行
alert('你好,世界1')
})
DOM 对象和 jQuery 对象
对象的分类
DOM
对象:是用 JavaScript 语法创建的对象,也看做是 js 对象。html 中的对象都是 DOM 对象。jQuery
对象:使用 jQuery 获取的对象。- DOM 对象可以转换成 jQuery 对象。
DOM 对象转换为 jQuery 对象
- 使用 $(DOM 对象) 方式,可以 DOM 对象转换为 jQuery 对象,转换为 jQuery 对象才可以使用 jQuery 中提供的方法,操作 DOM 对象。一般情况下,在命名 jQuery 对象时,为了与 DOM 对象进行区分,习惯性的以
$
开头,这不是必须的
。 - 示例代码如下:
<!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="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<!-- <script src="./js/index.js"></script> -->
<script>
$(function () {
// 通过 js 的函数,获取 DOM 对象
var dom = document.getElementById('txt')
// 把 DOM 对象转换为 jQuery 对象
var jQueryObj = $(dom)
// 调用 jQuery 中的函数,获取 dom 对象的 value 属性的值
alert(jQueryObj.val())
})
</script>
</head>
<body>
<input type="text" id="txt" value="你好,jQuery">
</body>
</html>
jQuery 对象转换为 DOM 对象
- 语法:jQuery 对象是一个
数组
,数组成员是 DOM 对象。使用 [下标] 或 get(下标) - 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<!-- <script src="./js/index.js"></script> -->
<script>
$(function () {
// js 获取 DOM 对象
var obj = document.getElementById('txt')
console.log(obj);
// $('#txt'):获取 id 为 txt 的 DOM 对象,结果是数组 jQuery 对象
console.log($('#txt'));
// $('#txt')[0] 就是 DOM 对象
console.log($('#txt')[0]);
})
</script>
</head>
<body>
<input type="text" id="txt" value="你好,jQuery">
</body>
</html>
上面示例代码运行结果,如下图:
选择器
- 选择器:就是定位条件。通知 jQuery 函数定位满足条件的 DOM 对象
- 基本选择器
- 根据 ID 、class 属性目标前类型名定位 HTML 元素,转换为 jQuery 对象
1、ID 选择器
语法:$(‘#ID’)
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<style>
.box {
width: 200px;
height: 200px;
background-color: pink;
}
</style>
<script>
// 点击按钮切换 div 的样式,添加 .box 类名
$(function () {
$('#btn').on('click',()=>{
$('#container').addClass('box')
})
})
</script>
</head>
<body>
<div id="container">你好,jQuery</div>
<button id="btn">切换</button>
</body>
</html>
2、class类选择器
语法:$(‘.class名称’)
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<style>
.box {
width: 200px;
height: 200px;
background-color: pink;
}
</style>
<script>
// 点击按钮切换 div 的样式,添加 .box 类名
$(function () {
$('.btn').on('click',()=>{
$('.container').addClass('box')
})
})
</script>
</head>
<body>
<div class="container">你好,jQuery</div>
<button class="btn">切换</button>
</body>
</html>
3、标签选择器
语法:$(‘标签名称’)
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<style>
.box {
width: 200px;
height: 200px;
background-color: pink;
}
</style>
<script>
// 点击按钮切换 div 的样式,添加 .box 类名
$(function () {
$('button').on('click',()=>{
$('div').addClass('box')
})
})
</script>
</head>
<body>
<div class="container">你好,jQuery</div>
<button class="btn">切换</button>
</body>
</html>
4、所有选择器
语法:${“*”}
选取页面中所有 DOM 对象。
5、组合选择器
- 组合选择器是多个被选对象间使用逗号分隔后形成的选择器,可以组合 id、class、标签名等。
语法:$(“#id ,.class,标签名”)
表单选择器
- 表单相关元素选择器是指文本框、单选框、复选框、下拉列表等元素的选择方式。该方法无论是否存在表单 form ,均可做出相应选择。表单选择器是为了能更加容易地操作表单,表单选择器是根据元素类型定义的。
语法:$(“:type 属性值”)
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
// 获取文本内容
$('#btn1').on('click', () => {
console.log($(':text').val());
})
// 获取单选框内容
$('#btn2').on('click', () => {
for (var i = 0; i < $(':radio').length; i++) {
var obj = $(':radio')[i]
console.log(obj.value); // js 写法
console.log($(':radio').val()); // jQuery 写法
}
})
// 获取复选框内容
$('#btn3').on('click', () => {
for (var i = 0; i < $(':checkbox').length; i++) {
var obj = $(':checkbox')[i]
console.log(obj.value); // js 写法
console.log($(':checkbox').val()); // jQuery 写法
}
})
})
</script>
</head>
<body>
<input type="text" value="我是表单 input 组件">
<button id="btn1">获取文本内容</button>
<br>
<hr>
<input type="radio" name="1" value="man">男
<input type="radio" name="1" value="woman">女
<button id="btn2">获取单选框内容</button>
<br>
<hr>
<input type="checkbox" value="篮球">篮球
<input type="checkbox" value="足球">足球
<input type="checkbox" value="排球">排球
<button id="btn3">获取复选框内容</button>
</body>
</html>
过滤器
- jQuery 对象中存储的 DOM 对象顺序与页面标签声明位置关系
基本过滤器
- 1、示例:选择第一个(first),保留数组中第一个 DOM 对象
语法:$(“选择器:first”)
- 2、示例:选择最后一个(last),保留数组中最后一个 DOM 对象
语法:$(“选择器:last”)
- 3、示例:选择数组中指定对象
语法:$(“选择器:eq(数组索引)”)
- 4、示例:选择大于某个下标的所有成员
语法:$(“选择器:gt(数组索引)”)
- 5、示例:选择小于某个下标的所有成员
语法:$(“选择器:lt(数组索引)”)
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
// 获取元素内容
console.log($('ul li:first').text()); // 第一个
console.log($('ul li:last').text()); // 最后一个
console.log($('ul li:eq(2)').text()); // 第三个
console.log($('ul li:gt(2)').text()); // 下标大于 2 的元素内容
console.log($('ul li:lt(2)').text()); // 下标小于 2 的元素内容
})
</script>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</body>
</html>
表单对象属性过滤器
- 1、示例:选择可用的文本框
语法:$(“:text:enabled”)
- 2、示例:选择不可用的文本框
语法:$(“:text:disabled”)
- 3、示例:复选框选中的元素
语法:$(“:text:checked”)
- 4、示例:选择指定下拉列表的被选中元素
语法:$(“选择器>option:selected”)
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
// 获取可用的文本框
$('#btn1').click(() => {
console.log($(':text:enabled').val());
})
// 获取不可用的文本框
$('#btn2').click(() => {
console.log($(':text:disabled').val());
})
// 获取选中的复选框内容
$('#btn3').click(() => {
var selectedObj = $(':checkbox:checked')
for (var i = 0; i < selectedObj.length; i++) {
// $(selectedObj[i]).val() DOM 对象转换为 jQuer 对象
console.log($(selectedObj[i]).val());
}
})
// 获取选中的下拉列表内容
$('#btn4').click(() => {
console.log($('#selected>option:selected').val());
})
})
</script>
</head>
<body>
<input type="text" value="我是可用的文本框">
<button id="btn1">选择可用的文本框</button>
<br>
<input type="text" disabled value="我是不可用的文本框">
<button id="btn2">选择不可用的文本框</button>
<br>
<hr>
<input type="checkbox" value="篮球">篮球
<input type="checkbox" value="足球">足球
<input type="checkbox" value="排球">排球
<button id="btn3">被选中的复选框内容</button>
<br>
<hr>
<select name="" id="selected">
<option value="篮球">篮球</option>
<option value="足球">足球</option>
<option value="排球">排球</option>
</select>
<button id="btn4">获取选中的下拉选择器内容</button>
</body>
</html>
函数(常用的函数)
val
函数
- 获取 DOM 对象的 value 属性;
$(“选择器”).val()
:无参数调用形式,读取数组中第一个 DOM 对象的 value 属性值- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
console.log($(':text').val());
})
</script>
</head>
<body>
<input type="text" value="你好,jQuery">
</body>
</html>
text
函数
- 操作标签的文本内容,标签开始和结束之间的内容
- 没有参数 ,把 DOM 数组中所有 DOM 对象的文本内容链接起来,形成一个字符串,并返回这个字符串。
- 有参数,给 DOM 数组中的所有成员统一赋予新的文本
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
console.log($('.box').text()); // 获取内容
$('.box').text('国庆节快乐!') // 赋值内容
})
</script>
</head>
<body>
<div class="box">你好,jQuery</div>
<div class="box">你好,jQuery</div>
<div class="box">你好,jQuery</div>
</body>
</html>
arrt
函数
- 操作 value ,文本以外的属性。
- attr(“属性名”):获取 DOM 数组中第一个 DOM 成员的此属性值
- attr(“属性名”,“属性值”):给 DOM 数组中所有 DOM 成员此属性赋值
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
console.log($('img').attr('src')); // 获取 src 值
$('img').attr('src', "www.baidu.com") // 赋值
})
</script>
</head>
<body>
<img src="https://www.baidu.com/img/flexible/logo/pc/peak-result.png" alt="">
</body>
</html>
remove
函数
- 将数组中所有 DOM 对象及其子对象一并删除
语法:$(选择器).remove()
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
$('.btn').click(() => {
$('select').remove()
})
})
</script>
</head>
<body>
<select name="" id="">
<option value="篮球">篮球</option>
<option value="足球">足球</option>
<option value="排球">排球</option>
</select>
<button class="btn">删除 DOM 元素</button>
</body>
</html>
empty
函数
- 将删除数组中所有 DOM 对象的子对象
$(选择器).empty()
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
$('.btn').click(() => {
$('select').empty()
})
})
</script>
</head>
<body>
<select name="" id="">
<option value="篮球">篮球</option>
<option value="足球">足球</option>
<option value="排球">排球</option>
</select>
<button class="btn">删除 DOM 元素</button>
</body>
</html>
append
函数
- 给 DOM 对象在他的后面增加新的 DOM 对象
语法:$(“选择器”).append(子 DOM 对象)
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
$('.btn').click(() => {
$('select').append('<option value="乒乓球">乒乓球</option>')
})
})
</script>
</head>
<body>
<select name="" id="">
<option value="篮球">篮球</option>
<option value="足球">足球</option>
<option value="排球">排球</option>
</select>
<button class="btn">添加 DOM 元素</button>
</body>
</html>
html
函数
- 无参数:获取 DOM 数组中第一个 DOM 对象的文本值(html() 返回结果相当于 innerHTML)
- 有参数:给 DOM 数组中所有成员设置新的文本内容
语法:$(选择器).html()
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
$('.btn').click(() => {
console.log($('span').html()); // 获取
$('span').html('我是新的<b>元素</b>') // 添加
})
})
</script>
</head>
<body>
<div class="container">
<span>
<b>中国</b>
</span>
<span>
<b>内蒙古自治区</b>
</span>
</div>
<button class="btn">获取、添加内容</button>
</body>
</html>
each
函数
- 是循环函数,可以循环数组、json、dom 对象数组
- 第一种写法:
语法:$.each(要循环的内容,function(index,element){处理函数})
- 要循环的内容:可以是数组,json对象,dom对象数组
- funciton:循环的处理函数,每个成员都会执行函数一次。
- index:是循环变量的值,名称自定义
- element:和 index 对应的成员, element 名称是自定义的
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
$('.btn').click(() => {
$.each($('ul li'), (index, item) => {
// $(item) 转换成 jQuery 对象
console.log(index, $(item).text());
})
})
})
</script>
</head>
<body>
<ul>
<li>篮球</li>
<li>足球</li>
<li>排球</li>
<li>乒乓球</li>
</ul>
<button class="btn">循环输出</button>
</body>
</html>
- 第二种写法
语法:$(选择器).each(funciton(index,element){处理函数})
- 可以对 jQuery 对象进行循环处理。jQuery 对象就是 DOM 数组
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
$('.btn').click(() => {
$('ul li').each(function (index, item) {
console.log(index, $(item).text());
})
})
})
</script>
</head>
<body>
<ul>
<li>篮球</li>
<li>足球</li>
<li>排球</li>
<li>乒乓球</li>
</ul>
<button class="btn">循环输出</button>
</body>
</html>
事件
- jQuery 可以给 DOM 对象绑定事件,在程序执行期间动态的处理事件
第一种事件绑定语法
语法:$(“选择器”).事件名称(事件的处理函数)
- 事件名称:就是 js 中的去掉
on
的部分。例如:单击事件onclick
,这里的事件名称就是click
- 事件的处理函数:函数定义,当事件发生时,执行这个函数
- 事件名称:就是 js 中的去掉
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
// 绑定点击事件
$('#btn').click(() => {
alert('jQuery 事件绑定成功')
})
})
</script>
</head>
<body>
<button id="btn">点我</button>
</body>
</html>
第二种事件绑定语法
on()
方法在被选元素上添加事件处理程序。该方法给 API 带来很多便利,推荐使用该方法语法:$(选择器).on(event,function(){处理函数})
- event:事件一个或者多个,多个之间空格分开
- function:规定当事件发生时运行的函数
- 示例代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function () {
$('.btn').on('click', () => {
alert($('.btn').text())
})
})
</script>
</head>
<body>
<button class="btn">on绑定事件方法</button>
</body>
</html>