- 什么是 jQuery? - 核心概念介绍
- 为什么要使用 jQuery? - 优势详解
- 第一个 jQuery 程序:Hello World! - 快速上手
- jQuery 核心语法:选择器与操作 - 核心功能详解
- jQuery 事件处理 - 让网页“动”起来
- jQuery 动画效果 - 丰富的视觉体验
- jQuery AJAX - 无刷新数据交互
- jQuery 插件 - 扩展功能
- 最佳实践与注意事项
- 学习资源推荐
什么是 jQuery?
jQuery 是一个快速、小型、功能丰富的 JavaScript 库,它的设计宗旨是“写得少,做得多”(Write Less, Do More)。
jQuery 封装了大量复杂的 JavaScript 代码,让你可以用更简洁、更直观的语法来操作 HTML 文档、处理事件、创建动画以及进行网络请求。
- 核心思想:通过选择元素,然后对选中的元素进行操作。
- 口号:jQuery The Write Less, Do More, JavaScript Library.
为什么要使用 jQuery?(优势)
在原生 JavaScript(Vanilla JS)日益强大的今天,学习 jQuery 依然有价值,尤其是在维护旧项目和理解 Web 开发的历史演进中。
-
简洁的语法:用 符号和链式调用,大大简化了 DOM 操作。
- 原生 JS:
document.getElementById('myId').style.color = 'red'; - jQuery:
$('#myId').css('color', 'red');
- 原生 JS:
-
跨浏览器兼容性:jQuery 自动处理了不同浏览器(尤其是 IE6/7/8)之间的差异,开发者无需编写大量兼容性代码。
-
强大的选择器:提供了比 CSS 更丰富的选择器,轻松定位页面上的任意元素。
-
链式操作:对同一个元素执行多个操作,可以像链条一样连接起来,代码更紧凑。
$('#myDiv').hide().addClass('hidden').fadeIn(1000);
-
丰富的动画和效果:内置了
show(),hide(),fadeIn(),slideUp()等简单易用的动画方法。 -
简化的 AJAX:
$.ajax()方法让异步请求变得异常简单。
第一个 jQuery 程序:Hello World!
这是学习任何新技术的第一步。
步骤 1:引入 jQuery 库
你需要先在 HTML 页面中引入 jQuery 库,最简单的方式是通过 CDN(内容分发网络)。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">jQuery Hello World</title>
<!-- 引入 jQuery 库 -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
<h1>你好,世界!</h1>
<button id="myButton">点击我</button>
<!-- 引入我们自己的 JavaScript 文件 -->
<!-- 注意:放在 jQuery 库之后 -->
<script src="app.js"></script>
</body>
</html>
步骤 2:编写 jQuery 代码
创建一个 app.js 文件,编写你的第一行 jQuery 代码。
// 等待整个 HTML 文档加载完毕后再执行 jQuery 代码
// 这是最重要的一个习惯,可以避免找不到元素
$(document).ready(function() {
// 当 id 为 "myButton" 的按钮被点击时
$('#myButton').on('click', function() {
// 找到 h1 标签,并修改其文本内容
$('h1').text('你好,jQuery 世界!');
});
});
代码解释:
$(document).ready(function() { ... });:这是一个核心函数,确保你的代码在页面所有元素(DOM)都加载完成后才执行,可以简写为$(function() { ... });。$('#myButton'):这是选择器, 是 jQuery 的别名,#myButton表示选择id为myButton的元素。.on('click', function() { ... }):这是事件绑定方法,表示监听元素的click事件,当事件发生时,执行后面的匿名函数。$('h1'):选择所有的<h1>.text('你好,jQuery 世界!'):这是一个方法,用于修改选中元素的文本内容。
jQuery 核心语法:选择器与操作
这是 jQuery 的基石。
A. 选择器
jQuery 的选择器几乎和 CSS 选择器一模一样。
| 选择器 | 示例 | 描述 |
|---|---|---|
| 基本 | 选择所有元素 | |
$("#id") |
选择 id 为 "id" 的元素 |
|
$(".class") |
选择所有 class 为 "class" 的元素 |
|
$("element") |
选择所有 <element> 元素 |
|
$("this") |
选择当前 HTML 元素 | |
| 层级 | $("parent > child") |
选择指定父元素下的直接子元素 |
$("ancestor descendant") |
选择指定祖先元素下的所有后代元素 | |
$("prev + next") |
选择紧接在 prev 元素后面的 next 元素 |
|
$("prev ~ siblings") |
选择 prev 元素之后的所有兄弟元素 |
|
| 过滤 | first |
选择第一个元素 |
last |
选择最后一个元素 | |
even |
选择索引为偶数的元素 (从 0 开始) | |
odd |
选择索引为奇数的元素 (从 0 开始) | |
eq(index) |
选择指定索引的元素 | |
gt(index) |
选择索引大于指定值的元素 | |
lt(index) |
选择索引小于指定值的元素 | |
not(selector) |
选择不匹配选择器的元素 | |
hidden |
选择所有隐藏的元素 | |
visible |
选择所有可见的元素 |
B. DOM 操作
选择到元素后,就可以对它们进行各种操作。
-
获取和设置内容
.text()/.text('new text'):获取/设置元素的文本内容(会忽略 HTML 标签)。.html()/.html('<strong>new html</strong>'):获取/设置元素的 HTML 内容。.val()/.val('new value'):获取/设置表单元素的值。
-
获取和设置属性
.attr('href'):获取元素的href属性。.attr('href', 'https://new-url.com'):设置元素的href属性。.removeAttr('href'):移除元素的href属性。
-
CSS 操作
.css('color'):获取元素的color样式。.css('color', 'blue'):设置元素的color样式。.addClass('my-class'):添加一个或多个类名。.removeClass('my-class'):移除一个或多个类名。.toggleClass('my-class'):如果存在则移除,不存在则添加。
-
元素遍历和修改
.each(function(index, element) { ... }):遍历一个 jQuery 对象,为每个元素执行一个函数。.append(content):在被选元素的结尾插入内容。.prepend(content):在被选元素的开头插入内容。.after(content):在被选元素之后插入内容。.before(content):在被选元素之前插入内容。.remove():删除被选元素(及其子元素)。.empty():删除被选元素的子元素。
jQuery 事件处理
jQuery 提供了一系列简单的事件方法。
| 方法 | 描述 |
|---|---|
.click(function() { ... }) |
点击事件 |
.dblclick(function() { ... }) |
双击事件 |
.mouseenter(function() { ... }) |
鼠标进入事件 |
.mouseleave(function() { ... }) |
鼠标离开事件 |
.hover(function() { ... }) |
鼠标悬停事件(进入和离开的组合) |
.focus(function() { ... }) |
获得焦点事件 |
.blur(function() { ... }) |
失去焦点事件 |
.on('event', function() { ... }) |
通用事件绑定方法,可以绑定任意事件,是最推荐的方式 |
示例:
// 使用 .on() 绑定多个事件
$('#myBox').on({
'click': function() {
$(this).css('background-color', 'lightblue');
},
'mouseenter': function() {
$(this).text('鼠标进来了');
},
'mouseleave': function() {
$(this).text('鼠标离开了');
}
});
jQuery 动画效果
让页面动起来,提升用户体验。
| 方法 | 描述 |
|---|---|
.show() |
显示元素 |
.hide() |
隐藏元素 |
.toggle() |
切换元素的显示与隐藏状态 |
.fadeIn() |
淡入显示元素 |
.fadeOut() |
淡出隐藏元素 |
.fadeToggle() |
切换元素的淡入淡出状态 |
.slideDown() |
向下滑动显示元素 |
.slideUp() |
向上滑动隐藏元素 |
.slideToggle() |
切换元素的滑动显示与隐藏状态 |
.animate({params}, speed, callback) |
自定义动画 |
示例:
// 点击按钮时,执行一个自定义动画
$('#animateBtn').click(function() {
$('#myBox').animate({
width: '500px', // 宽度变为 500px
height: '300px', // 高度变为 300px
opacity: 0.5 // 透明度变为 0.5
}, 1000, function() {
// 动画完成后执行的回调函数
alert('动画完成!');
});
});
jQuery AJAX
jQuery 的 AJAX 功能让前后端数据交互变得非常简单。
最核心的方法是 $.ajax(),但更常用的是它的简化版本。
$.get() 和 $.post()
// $.get() 用于 GET 请求
$('#getDataBtn').click(function() {
$.get('https://jsonplaceholder.typicode.com/posts/1', function(data) {
// data 是服务器返回的 JSON 数据
$('#result').html('<h3>' + data.title + '</h3><p>' + data.body + '</p>');
});
});
// $.post() 用于 POST 请求
$('#postDataBtn').click(function() {
$.post('https://jsonplaceholder.typicode.com/posts', {
title: 'foo',
body: 'bar',
userId: 1
}, function(data) {
$('#result').text('数据已发送,服务器返回 ID: ' + data.id);
});
});
$.ajax() - 强大的核心方法
$.ajax({
url: 'https://jsonplaceholder.typicode.com/posts/1',
method: 'GET', // 或 'POST'
dataType: 'json', // 预期服务器返回的数据类型
success: function(data) {
console.log('请求成功:', data);
},
error: function(xhr, status, error) {
console.error('请求失败:', error);
},
complete: function(xhr, status) {
console.log('请求完成 (无论成功或失败)');
}
});
jQuery 插件
jQuery 的生态系统非常强大,有海量的第三方插件,可以轻松实现复杂功能,如轮播图、日历、表单验证等。
使用插件的步骤:
- 引入插件文件:在 jQuery 库之后引入插件的 JS 和 CSS 文件。
- 调用插件方法:用 jQuery 选择器选中元素,然后调用插件提供的方法。
示例:一个简单的模态框插件
<!-- 引入 jQuery -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<!-- 引入一个假设的模态框插件 -->
<script src="path/to/simple-modal.js"></script>
<button id="openModal">打开模态框</button>
<div id="myModal" style="display:none;">
<h2>这是一个模态框</h2>
<p>内容...</p>
<button id="closeModal">关闭</button>
</div>
<script>
// 调用插件方法
$('#myModal').simpleModal();
$('#openModal').click(function() {
$('#myModal').open();
});
$('#closeModal').click(function() {
$('#myModal').close();
});
</script>
最佳实践与注意事项
- 始终使用
$(document).ready():确保 DOM 加载完成后再执行脚本。 - 使用语义化的选择器:尽量使用
id和class,避免使用通用的标签名选择器(如$('div')),以提高性能。 - 缓存 jQuery 对象:如果多次操作同一个元素,先把它存到一个变量里,避免重复查询 DOM。
- 不推荐:
$('#myDiv').css('color', 'red'); $('#myDiv').addClass('active'); - 推荐:
var $myDiv = $('#myDiv'); $myDiv.css('color', 'red'); $myDiv.addClass('active');
- 不推荐:
- 使用事件委托:对于动态添加的元素,使用
.on()的事件委托形式,可以避免重复绑定事件。- 场景:一个列表,里面的项目是动态加载的。
- 不推荐:
$('.item').click(...);(动态添加的.item不会响应) - 推荐:
$('#list-container').on('click', '.item', function() { ... });(在已存在的父容器上监听)
- 版本选择:对于新项目,尽量使用最新稳定版,对于需要兼容旧浏览器(如 IE)的项目,选择支持 IE 的版本(如 1.x, 2.x)。
- 不要滥用 jQuery:对于简单的操作,原生 JavaScript 可能更快、更轻量。
学习资源推荐
- 官方文档:https://api.jquery.com/ - 最权威、最全面的参考资料。
- jQuery 教程 - W3Schools:https://www.w3schools.com/jquery/ - 简单易懂,适合初学者。
- jQuery 教程 - 菜鸟教程:https://www.runoob.com/jquery/jquery-tutorial.html - 提供大量实例和在线演示。
- jQuery UI:https://jqueryui.com/ - 官方提供的 UI 组件库,包含丰富的交互组件和主题。
- CodePen / JSFiddle:在这些平台上可以轻松创建和分享 jQuery 代码片段,是学习和实验的好地方。
这份教程涵盖了 jQuery 的核心知识,通过学习和实践这些内容,你将能够熟练地使用 jQuery 来构建动态、交互性强的网页,祝你学习愉快!
