当前位置: 首页 > news >正文

JavaScript学习教程,从入门到精通,jQuery概述与简单使用(31)

jQuery概述与简单使用

jQuery是一个快速、简洁的JavaScript库,其设计宗旨是"write Less, Do More",即用更少的代码完成更多的工作。它是一个封装好的特定集合(方法和函数),优化了DOM操作、事件处理、动画设计和Ajax交互。

jQuery的引入方式

<!-- 本地引入 -->
<script src="jquery-3.7.1.min.js"></script><!-- CDN引入 -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

jQuery入口函数

jQuery提供了两种入口函数的写法,确保DOM加载完成后再执行代码:

// 写法一(推荐)
$(function() {// 此处是页面DOM加载完成的入口
});// 写法二
$(document).ready(function() {// 此处是页面DOM加载完成的入口
});

这两种写法都相当于原生JS中的DOMContentLoaded事件,不同于load事件(需要等待所有外部资源加载完成)。

二、$()函数与jQuery对象

$()函数

$是jQuery的顶级对象,相当于原生JavaScript中的window$()函数是jQuery的核心函数,也称为工厂函数,主要用于:

  1. 选择DOM元素:$("selector")
  2. 创建DOM元素:$("<div>新元素</div>")
  3. 将DOM对象转换为jQuery对象:$(domObj)

jQuery对象与DOM对象

jQuery对象是通过$()函数包装DOM对象后产生的对象,以伪数组形式存储。两者不能混用方法:

// DOM对象:原生JS获取的对象
var div = document.querySelector('div');
console.log(div); // DOM对象// jQuery对象:用jquery方式获取的对象
$('div');
console.dir($('div')); // 输出结果是一个伪数组

相互转换

// DOM转jQuery对象
var video = document.querySelector('video');
$(video); // 转换为jQuery对象// jQuery转DOM对象(两种方式)
$('video')[0]; // 方法一:通过索引获取
$('video').get(0); // 方法二:使用get方法

三、jQuery选择器

jQuery选择器用于快速定位DOM元素,语法为$("选择器"),引号内写法与CSS选择器相同。

基础选择器

名称用法描述
ID选择器$("#id")获取指定ID的元素
类选择器$(".class")获取同一类class的元素
标签选择器$("div")获取同一类标签的所有元素
全选选择器$("*")匹配所有元素
并集选择器$("div,p,li")选取多个元素
交集选择器$("li.current")选择同时满足条件的元素

层级选择器

名称用法描述
子代选择器$("ul>li")获取亲儿子层级的元素
后代选择器$("ul li")获取ul下的所有li元素,包括子孙

筛选选择器

语法用法描述
:first$('li:first')获取第一个li元素
:last$('li:last')获取最后一个li元素
:eq(index)$('li:eq(2)')获取索引号为2的元素(从0开始)
:odd$('li:odd')获取索引号为奇数的元素
:even$('li:even')获取索引号为偶数的元素

筛选方法

方法用法说明
parent()$("li").parent()查找父级
children()$("ul").children("li")相当于$("ul>li")
find()$("ul").find("li")相当于$("ul li")
siblings()$(".first").siblings("li")查找兄弟节点,不包括自己
eq()$("li").eq(2)相当于$("li:eq(2)")

隐式迭代

jQuery会自动遍历内部DOM元素(伪数组形式存储),无需手动循环:

$("ul li").css("background", "pink"); 
// 自动为所有li元素设置背景色,无需遍历

四、on()方法绑定事件

on()方法是jQuery中绑定事件处理程序的首选方法,自jQuery 1.7起,它替代了bind()live()delegate()方法。

基本语法

$(selector).on(event, childSelector, data, function, map)

多种使用方式

  1. 基础事件绑定
$("p").on("click", function() {alert("段落被点击");
});
  1. 事件委托(适合动态元素):
$("div").on("click", "p", function() {// 点击div内的p元素时触发$(this).css("background", "yellow");
});
  1. 批量绑定事件
$("div").on({click: function() { /* 点击事件 */ },mouseenter: function() { /* 鼠标进入事件 */ }
});
  1. 链式绑定
$("div").on("click", function() { /*...*/ }).on("mouseenter", function() { /*...*/ });

事件解绑

使用off()方法解除事件绑定:

// 解绑所有click事件
$("div").off("click");// 解绑特定处理函数
$("div").off("click", handlerFunction);

五、鼠标事件

jQuery提供了丰富的鼠标事件处理方法:

常用鼠标事件

  1. click() - 点击事件
$("button").click(function() {alert("按钮被点击");
});
  1. dblclick() - 双击事件
$("div").dblclick(function() {$(this).css("background", "blue");
});
  1. mouseenter() - 鼠标进入
$("div").mouseenter(function() {$(this).css("border", "2px solid red");
});
  1. mouseleave() - 鼠标离开
$("div").mouseleave(function() {$(this).css("border", "none");
});
  1. hover() - 鼠标悬停(结合进入和离开)
$("div").hover(function() { // 鼠标进入$(this).css("background", "yellow");},function() { // 鼠标离开$(this).css("background", "white");}
);

事件对象

jQuery统一了事件对象,提供跨浏览器兼容性:

$("div").click(function(event) {console.log(event.pageX); // 鼠标相对于文档的X坐标console.log(event.pageY); // 鼠标相对于文档的Y坐标console.log(event.target); // 触发事件的DOM元素console.log(event.type); // 事件类型(如"click")event.preventDefault(); // 阻止默认行为event.stopPropagation(); // 阻止事件冒泡
});

六、css()方法操作样式

css()方法是jQuery中用于获取或设置元素样式的主要方法。

获取样式

// 获取第一个匹配元素的color样式
var color = $("p").css("color");
console.log(color); // 输出如"rgb(255, 0, 0)"

设置单个样式

// 设置所有p元素的文字颜色为红色
$("p").css("color", "red");// 数值可省略单位(默认为px)
$("div").css("width", 300); // 等价于"300px"

设置多个样式

$("div").css({"width": "200px","height": 150, // 数值会自动加px"background-color": "#f0f0f0","border": "1px solid black"
});

使用函数设置样式

$("div").css("width", function(index, currentWidth) {// index - 元素在集合中的索引// currentWidth - 当前宽度值return parseInt(currentWidth) + 50 + "px";
});

七、类样式操作

jQuery提供了专门的方法来操作元素的class属性:

addClass() - 添加类

$("div").addClass("highlight"); // 添加单个类
$("div").addClass("highlight active"); // 添加多个类

removeClass() - 移除类

$("div").removeClass("highlight"); // 移除单个类
$("div").removeClass("highlight active"); // 移除多个类
$("div").removeClass(); // 移除所有类

toggleClass() - 切换类

$("button").click(function() {$("div").toggleClass("active"); // 有则移除,无则添加
});

hasClass() - 检查类

if ($("div").hasClass("active")) {console.log("该元素有active类");
}

八、综合案例

案例1:排他思想实现选项卡

<div class="tab"><div class="tab_list"><ul><li class="current">商品介绍</li><li>规格与包装</li><li>售后保障</li></ul></div><div class="tab_con"><div class="item" style="display:block">商品介绍内容</div><div class="item">规格与包装内容</div><div class="item">售后保障内容</div></div>
</div><script>
$(function() {// 1. 给tab栏的li绑定点击事件$(".tab_list li").click(function() {// 2. 当前tab栏被选中,其他tab栏取消选中$(this).addClass("current").siblings().removeClass("current");// 3. 获取被点击tab栏的索引号var index = $(this).index();// 4. 让对应索引号的item显示,其他隐藏$(".tab_con .item").eq(index).show().siblings().hide();});
});
</script>

案例2:表格隔行变色

<table border="1" cellspacing="0" cellpadding="0"><thead><tr><th>序号</th><th>姓名</th><th>年龄</th></tr></thead><tbody><tr><td>1</td><td>张三</td><td>20</td></tr><tr><td>2</td><td>李四</td><td>22</td></tr><tr><td>3</td><td>王五</td><td>25</td></tr><tr><td>4</td><td>赵六</td><td>28</td></tr></tbody>
</table><script>
$(function() {// 1. 给tbody内的奇数行添加样式$("tbody tr:odd").css("background-color", "#f2f2f2");// 2. 给tbody内的偶数行添加样式$("tbody tr:even").css("background-color", "#fff");// 3. 鼠标悬停效果$("tbody tr").hover(function() {$(this).css("background-color", "#ddd");},function() {// 恢复原来的背景色var index = $(this).index();$(this).css("background-color", index % 2 === 0 ? "#fff" : "#f2f2f2");});
});
</script>

案例3:全选与反选

<div class="checkbox-group"><input type="checkbox" id="checkAll"> 全选/取消全选<br><input type="checkbox" class="checkItem"> 选项1<br><input type="checkbox" class="checkItem"> 选项2<br><input type="checkbox" class="checkItem"> 选项3<br><button id="reverseBtn">反选</button>
</div><script>
$(function() {// 1. 全选/取消全选$("#checkAll").click(function() {$(".checkItem").prop("checked", $(this).prop("checked"));});// 2. 当所有子选项被选中时,自动勾选全选$(".checkItem").click(function() {var allChecked = $(".checkItem").length === $(".checkItem:checked").length;$("#checkAll").prop("checked", allChecked);});// 3. 反选功能$("#reverseBtn").click(function() {$(".checkItem").each(function() {$(this).prop("checked", !$(this).prop("checked"));});// 更新全选按钮状态var allChecked = $(".checkItem").length === $(".checkItem:checked").length;$("#checkAll").prop("checked", allChecked);});
});
</script>

九、总结

jQuery通过简洁的语法和强大的功能,极大地简化了JavaScript编程。核心要点包括:

  1. $()函数:jQuery的核心,用于选择元素、创建元素和转换对象
  2. 选择器:丰富的选择器语法,快速定位DOM元素
  3. 链式调用:多数jQuery方法返回jQuery对象,支持链式写法
  4. 隐式迭代:自动遍历匹配的元素集合,无需手动循环
  5. 事件处理on()方法统一了事件绑定,支持事件委托
  6. 样式操作css()方法简化了样式获取和设置
  7. 类操作:专门的类操作方法,不影响其他类

随着Web技术的发展,虽然现代框架如React、Vue等逐渐流行,但jQuery因其简单易用、兼容性好等特点,仍然在许多项目中广泛使用。最新的jQuery 4.0版本也在持续更新中,提供了更好的性能和现代特性支持。

相关文章:

  • 【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SSM/BV-10-C】
  • QT—布局管理器之QStackedLayout篇
  • Windows系统编译支持GPU的llama.cpp
  • 力扣hot100——114.二叉树展开为链表
  • usb端点笔记
  • 深入理解 C++11 delete 关键字:禁用函数的艺术
  • 软件产品测试报告:如何全面评估及保障软件质量?
  • 综合练习二
  • 人工智能企业算法备案:流程、要点与服务保障
  • 制作一款打飞机游戏36:调度编辑器
  • iView Admin的side menu改为top menu
  • 大连理工大学选修课——机器学习笔记(8):Boosting及提升树
  • kkFileView文档在线预览方案及Nginx代理方式访问
  • 如何在uni-app中自定义输入框placeholder的样式
  • TM1668芯片学习心得三
  • 使用vue开发electron
  • k8s术语值ReplicaSet
  • Spring 转发 form-data 文件上传请求时中文文件名乱码
  • 基本算法之龟速乘
  • 机器翻译与数据集
  • 五一期间全国高速日均流量6200万辆,同比增长8.1%
  • 马上评|科学谋划“十五五”,坚定不移办好自己的事
  • 人物|德国新外长关键词:总理忠实盟友、外交防务专家、大西洋主义者
  • 陕西省通报6起违反八项规定典型问题,省卫健委原主任刘宝琴违规收受礼品礼金
  • “女乘客遭顺风车深夜丢高速服务区”续:滴滴永久封禁两名涉事司机账号
  • 在循环往复的拍摄中,重新发现世界