45. jQuery

news/2024/12/19 1:54:52/文章来源:https://www.cnblogs.com/hbutmeng/p/18608944

1. jQuery介绍

1.1 概念

 jQuery 是一个快速、小型且功能丰富的 JavaScript 库。它使 比如 HTML 文档遍历和操作、事件处理、 动画和 Ajax 通过易于使用的 API 变得更加简单,该 API 可以在 多种浏览器。结合了多功能性和 可扩展性,jQuery 改变了数百万人的编写方式 JavaScript 的 JavaScript 中。

类比于python中的模块,前端称之为"类库"

1.2 导入方式

将网页代码全部复制,在项目中新建jQuery文件,代码粘贴到文件中.

在HTML文件中使用script标签导入

2. 选择器

2.1 基本选择器

$("p")        标签选择器
$("#d1")        id选择器
$(".c1")        类选择器
$("div, #d1, .c1")    选择器组合:通过逗号分隔多个选择器,同时选择多个元素
$("p#d1")        配合使用:找到p标签下含有id为d1的选择器
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><div id="d1" style="height: 100px; width: 100px; background-color: deepskyblue"><p id="d2">帅年轻有为</p></div><p class="c1">Canada</p></body>
</html>

2.2 层级选择器

$("a b")        //后代选择器:a的所有后代b
$("a > b")        //子代选择器:a的所有子代b
$("a + b")        //相邻兄弟选择器:紧随a标签之后的兄弟标签b
$("a ~ b")        //通用兄弟选择器:a标签之后的所有兄弟标签b

3. 基本筛选器

:first           //匹配第一个元素。
:last           //匹配最后一个元素。
:even           //匹配索引为偶数的元素(索引从0开始)。
:odd            //匹配索引为奇数的元素(索引从0开始)。
:eq(index)        //匹配索引为指定值index的元素(索引从0开始)。
:gt(index)        //匹配索引大于指定值index的元素(索引从0开始)。
:lt(index)        //匹配索引小于指定值index的元素(索引从0开始)。
:not(元素选择器)    //移除所有满足not条件的标签
:has(元素选择器)    //查看后代标签是否含有某个标签
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><ul id="d1"><li>001</li></ul><ul id="d2"><li>002</li></ul><ul id="d3"><li>003</li></ul><ul id="d4"><li>004</li></ul><ul id="d5"><li>005</li></ul><ul id="d6"><li>006</li></ul><ul id="d7"><li>007</li></ul><ul id="d8"><li>008</li></ul><ul id="d9"><li>009</li></ul>
</body>
</html>

4. 属性选择器

    <input type="text" name="avril"><p name="Toronto">Canada</p>

5. 表单筛选器

    <form action=""><input type="text"><input type="password"><input type="checkbox"><input type="checkbox" checked><input type="submit"><input type="button"><select name="" id="d1"><option value="">11</option><option value="" selected>22</option><option value="">33</option></select></form>

$('input[type="text"]') 筛选器简化 $(':text')

$(':checked')   由于checked为设置默认值,在示例代码中既能匹配到input标签,也能匹配到通过selected设置了默认值的option标签
$(':selected')   只会匹配到option标签

6. 筛选器方法

# 同级别往下查找
$("#id").next()
$("#id").nextAll()
$("#id").nextUntil("#i2")
# 同级别往上查找
$("#id").prev()
$("#id").prevAll()
$("#id").prevUntil("#i2")
# 查找祖先标签
$("#id").parent()
$("#id").parents()
$("#id").parentsUntil()
# 查找子代和兄弟标签
$("#id").children(); //子代标签
$("#id").siblings(); //兄弟标签(同级别上下所有标签)

7. jQuery操作标签

7.1 操作class

jQuery操作    DOM操作
addClass() 向标签添加一个或多个类名 classList.add()
removeClass() 从标签移除一个或多个类名 classList.remove()
hasClass() 检查标签是否包含指定的类名 classList.contains()
toggleClass() 不存在,添加类名;存在,移除类名 classList.toggle()
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><p class="c1"></p>
</body>
</html>

7.2 操作css

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><p>11</p><p>22</p>
</body>
</html>

7.3 操作位置

.scrollTop() 和 .scrollLeft()

不加参数就是获取,加参数就是设置值
用于获取或设置元素的滚动条的垂直或水平偏移值。
.scrollTop() 返回或设置元素垂直方向的滚动条偏移值
.scrollLeft() 返回或设置元素水平方向的滚动条偏移值。

// 位置操作
//  获取左侧滚动条距离顶端的位移量
$(window).scrollTop() 
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><div style="height: 1000px;background-color: deepskyblue"></div><div style="height: 1000px;background-color: orange"></div><script>$(window).scroll(function () {if($(window).scrollTop() > 600){alert('超过600px,弹出提示框')}})
</script>
</body>
</html>

$(window).scroll(function () { ... }):这部分代码绑定了一个滚动事件处理器到窗口对象上。每当用户滚动窗口(无论是使用鼠标滚轮、触摸板滚动、页面内的滚动条还是其他方式),这个函数就会被触发。
if($(window).scrollTop() > 600):这里使用了 jQuery 的 scrollTop() 方法来获取当前垂直滚动的位置。此方法返回的是文档已经滚动走过的距离(以像素为单位)。如果这个值大于600,则表示用户已经滚动超过了600像素。
alert('超过600px,弹出提示框'):当上述条件成立时,即用户滚动的距离超过600像素时,就会执行这行代码。alert() 函数会创建一个警告框,暂停用户的交互并显示消息“超过600px,弹出提示框”。

7.4 操作文本

  jQuery操作 DOM操作
文本内容 text() innerText
HTML内容 html() innerHTML
表单元素的值 val() value
文件 转成JavaScript对象再操作 files

空括号为获取,括号里面有值为设置

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><p id="d1">帅年轻有为</p>
</body>
</html>

7.5 操作属性

[1] 概念

attr(name)                       获取属性值
attr(name,value)                   设置单个属性值
attr(name1:value1; name2:value2...)    设置多个属性值
removerAttr(name)                  移除属性    

[2] 代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><p id="d1">帅年轻有为</p>
</body>
</html>

[3]jQuery 的 prop() 方法

jQuery 的 .prop() 方法用于获取或设置 DOM 元素的属性值。

用法:

获取属性值$(selector).prop(name)
设置属性值$(selector).prop(name, value)

prop() 应用于 DOM 属性,而不是 HTML 特性。
对于布尔属性(如 checked, selected, disabled),prop() 可以正确地处理它们的真/假状态。
prop() 是从 jQuery 1.6 开始引入的,在此之前的版本应该使用 attr() 方法来代替。
prop() 更适合处理DOM属性,而 attr() 更适合处理 HTML 特性。

attr():用于获取或设置元素的 HTML 属性(即那些写在标签中的属性)。例如,<input id="myCheckbox" checked> 可以用 attr('checked') 来获取或设置 checked 属性。
prop():用于获取或设置元素的属性(即那些由元素本身定义的属性)。例如,对于 checked 属性,prop() 更适合处理其状态,因为 checked 实际上是一个布尔属性,它表示复选框的选中状态。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><p>a <input type="checkbox"></p><p>b <input type="checkbox"></p><p>c <input type="checkbox" id="c1" checked></p><p>d <input type="checkbox" id="d1"></p>
</body>
</html>

在运行代码未点击任何选择框的情况下,$("#c1").attr("checked")为'checked',$("#c1").prop("checked")为true

将默认选中c取消后,$("#c1").attr("checked")仍为'checked',而$("#c1").prop("checked")为false

显然,对于布尔属性checked,prop()更适合判断其状态

7.6 操作文档

[1] 概念

添加到指定元素内部的后面
$(A).append(B)        //B追加到A
$(A).appendTo(B)        //A追加到B

添加到指定元素内部的前面
$(A).prepend(B)        //B添加到A内部的前面
$(A).prependTo(B)        //A添加到B内部的前面

添加到指定元素外部的后面
$(A).after(B)        //B添加到A外部的后面
$(A).insertAfter(B)        //A添加到B外部的后面

添加到指定元素外部的前面
$(A).before(B)        //B添加到A外部的前面
$(A).insertBefore(B)        //A添加到B外部的前面

移除和清空元素
remove()            //从DOM中删除所有匹配的元素
empty()            //删除匹配的元素集合中所有的子节点

[2] 代码

7.7 操作事件

[1] 概念

JavaScript绑定事件的两种方式:

(1)标签属性中绑定  <p onclick="showDetail()">点击显示详细内容</p>

(2)标签对象绑定     标签对象.onclick = function(){}

 

jQuery绑定事件的两种方式:

(1)使用.on()方法(从 jQuery 1.7 版本开始,推荐,首选)   

   $(selector).on(eventName, eventHandler)    $('#d1').on('click',function(){})

(2)快捷方法(有时无法生效)                        

   jQuery对象.click(function(){})          jQuery对象.change(function(){})

[2] 克隆事件

(1)只克隆标签不克隆事件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><button id="d1">帅,年轻有为</button><script>$("#d1").click(function (){$("body").append($(this).clone())})</script>
</body>
</html>

点击第一个标签时,依次克隆标签,点击后续标签无法克隆

(2)克隆事件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><button id="d1">帅,年轻有为</button><script>$("#d1").click(function (){$("body").append($(this).clone(true))})</script>
</body>
</html>

点击第一个标签和后续克隆的标签都可以克隆

[3] 悬浮事件

(1)鼠标悬浮上去和移开各触发一次

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><button id="d1">鼠标悬浮展示具体内容</button><script>$("#d1").hover(function (){alert("帅,年轻有为")})</script>
</body>
</html>

鼠标悬浮在按钮和从按钮移开都会弹出显示框

(2)如果想要鼠标悬浮和移开执行不同的操作,需要写两个函数

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><button id="d1">鼠标悬浮展示具体内容</button><script>$("#d1").hover(function (){alert("帅,年轻有为")},function (){alert("已移除悬浮")})</script>
</body>
</html>

[4] input框实时监控

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><input type="text" id="d1"><script>$("#d1").on("input",function (){console.log($(this).val())})</script>
</body>
</html>

输入框内每输入或删除一个字符,控制台都会动态打印

[5] 阻止默认行为

当事件触发时,浏览器通常会执行一些默认的操作,比如点击链接会跳转到另一个页面,提交表单会向服务器发送数据等。如果不希望这些默认行为发生,就可以使用以下两种方法来阻止。

(1)return false

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><form action="">用户名:<input type="text"><input type="submit" id="d1"></form><script>$("#d1").on("click", function (){alert("帅年轻有为")return false})</script>
</body>
</html>

当以上代码没有return false时,点击提交按钮既会弹出显示框,也会将刷新页面提交数据

而加上return false后,d1标签的默认行为提交数据已被阻止,只能弹出显示框

(2)preventDefault()

该方法需要配合参数使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><form action="">用户名:<input type="text"><input type="submit" id="d1"></form><script>$("#d1").on("click", function (a) {alert("帅年轻有为")a.preventDefault()})</script>
</body>
</html>

[6] 阻止事件冒泡

多个标签嵌套并且有相同事件的情况下,会出现逐级汇报的现象
当事件被触发时,它通常会在DOM树中向上冒泡到根节点

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><div id="d1">div标签<p id="d2">p标签<span id="d3">span标签</span></p></div><script>$("#d1").on("click", function(){alert("这是div标签")})$("#d2").on("click", function(){alert("这是p标签")})$("#d3").on("click", function(){alert("这是span标签")})</script>
</body>
</html>

当触发d3的点击事件时,事件将在DOM树中向上冒泡到根节点,依次弹出d3、d2、d1的显示框

阻止事件冒泡有以下两种方式:

(1)return false

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><div id="d1">div标签<p id="d2">p标签<span id="d3">span标签</span></p></div><script>$("#d1").on("click", function(){alert("这是div标签")})$("#d2").on("click", function(){alert("这是p标签")})$("#d3").on("click", function(){alert("这是span标签")return false})</script>
</body>
</html>

加上return false后,触发d3的点击事件时,只弹出d3的显示框,不再向上冒泡

(2)stopPropagation()

该方法需要配合参数使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><div id="d1">div标签<p id="d2">p标签<span id="d3">span标签</span></p></div><script>$("#d1").on("click", function(){alert("这是div标签")})$("#d2").on("click", function(){alert("这是p标签")})$("#d3").on("click", function(e){alert("这是span标签")e.stopPropagation()})</script>
</body>
</html>

[7] 事件委托

(1)引出

针对动态创建的标签,提前写好的事件是无法生效的

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><button>点击展示有趣内容</button><button>点击展示有趣内容</button><script>$("button").on("click", function (){alert("帅年轻有为")})</script>
</body>
</html>

点击动态新建的标签,不会弹出显示框,点击其它两个标签会弹出显示框

(2)使用事件委托动态添加元素

基本语法:$('body').on('事件类型','选择器',function(){})

$('body').on('click','button',function(){})

body 元素内的所有 button 元素(包括未来动态添加的按钮)绑定一个点击事件处理器。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="jQuery.js"></script>
</head>
<body><button>点击展示有趣内容</button><button>点击展示有趣内容</button><script>$("body").on("click", "button", function (){alert("帅年轻有为")})</script>
</body>
</html>

使用事件委托后,点击动态添加的标签也会弹出显示框。

8. JavaScript对象与jQuery对象转换

可以将jQuery对象看成是数组包了标签对象
JavaScript对象就是标签对象
$('#d1')[0] // jQuery对象转JavaScript对象
$(标签对象) // JavaScript对象转jQuery对象

9. jQuery的动画效果

9.1 fadeIn()和fadeOut()

这两个方法可以实现元素的淡入淡出效果

fadeIn()将元素逐渐显示出来
fadeOut()则使元素逐渐消失

fadeIn() 函数可以接受两个参数:
速度:可以是“slow”、“fast”或者一个表示动画持续时间的数字(毫秒)。如果不指定,默认是“normal”速度,通常等同于400毫秒。
回调函数:一个在动画完成之后执行的函数。

// 淡入显示元素,并在动画完成后执行回调函数
$('#element').fadeIn(function() {
alert('Element is now visible!');
});

9.2 slideUp()和slideDown()

这两个方法可以实现元素的上滑和下滑效果。
slideUp()将元素向上滑动隐藏,
slideDown()则使元素从上方下滑显示出来。

slideUp() 函数可以接受两个参数:
速度:可以是“slow”、“fast”或者一个表示动画持续时间的数字(毫秒)。如果不指定,默认是“normal”速度,通常等同于400毫秒。
回调函数:一个在动画完成之后执行的函数。

// 向上滑动隐藏元素,并在动画完成后执行回调函数
$('#element').slideUp(function() {
alert('Element is now hidden!');
});

9.3 animate()

该方法允许创建自定义动画,通过逐步改变 CSS 属性值来实现动画效果。这个函数非常灵活,可以用来模拟几乎所有的动画行为,包括移动、缩放、旋转、改变透明度等。

animate() 函数的基本语法如下:
$(selector).animate(properties, duration, easing, complete);
selector:选择器或者 jQuery 对象,指定要动画化的元素。
properties:一个对象,包含要改变的 CSS 属性和目标值。
duration:动画持续的时间(例如 "slow"、"fast" 或毫秒数)。
easing:一个字符串,指定动画的缓动函数(例如 "linear"、"swing" 或自定义的函数)。
complete:动画完成后要执行的回调函数。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855134.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务治理Consul篇

服务中心Consul 光从名字上就能看出他是个头头。Consul的本意是“领事,总督”。就像战场上的将军,带一帮喽啰去打仗,首先他要有个花名册,记录下他们有哪些战士,姓甚名谁,抡大刀还是耍长枪,他要知道哪个战士的能力如何,该对付多少敌人,哪个战士失踪了,或者战伤了,该不…

数据库高可用性与容灾

title: 数据库高可用性与容灾 date: 2024/12/19 updated: 2024/12/19 author: cmdragon excerpt: 在现代企业中,数据库的高可用性和容灾能力至关重要。为了保证业务的连续性,必须确保数据库在发生故障或灾难时能够快速恢复和持续可用。将探讨实现数据库高可用性和容灾的策略,…

Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?

Redis 是一个内存数据库,意味着它主要将数据存储在内存中,从而能够提供极高的性能。然而,作为内存数据库,Redis 默认情况下的数据不会永久保存。为了确保数据在重启或故障后能够恢复,Redis 提供了几种 **持久化机制**。这些机制允许 Redis 将内存中的数据保存到硬盘上,从…

【甲方安全】金融行业+网络安全合规

一、金融机构安全建设需求分析框架 由于金融数据的敏感性和金融交易的重要性,使得金融机构成为网络攻击行为的重点目标,也使金融机构成为网络安全监管的重点关注对象。 金融机构在进行网络安全需求分析和安全体系建设时,建议从安全建设的外部和内部两方面的驱动力进行分析,…

应用题6

考点:图的存储结构(邻接矩阵,邻接表,邻接多重表,十字链表)P149-165 Dijkstra 算法求最短路径 P173-177 普利姆算法求最小生成树 P170-173邻接矩阵表示图;若有节点元素n个,则有n*n个元素的数组,第i行表示从i元素出发到达各个元素的路径是否存在。 第i列则表示从各元素进…

【架构】一文搞懂业务架构的5个核心概念

今天聊聊业务架构的5个核心概念。 商业模式 商业模式是帮助企业成功的“秘诀”,它通过整合企业内外部的多种要素,构建起一个全面、高效且具有独特竞争优势的运营体系。这一体系的目的是满足市场的需求,实现各利益相关者价值最大化,并确保企业的长期盈利能力。 商业模式的核…

VbaCompiler 1.6.4 注册分析[1]

VbaCompiler 1.6.4 注册分析[1] 目录VbaCompiler 1.6.4 注册分析[1]说明AboutDialog校验注册文件lambda_check_key_402880parse_key_file_529060 解析注册keyparse_key_534660check_key_header_535091shift_decode_532C99verify_52A520pyps2.5.2版本有多处key3 是否为空校验注册…

最大交换

本题的关键是越往后找到一个最大的数与越靠前的最小的数进行交换。从右往前遍历,找到右边最大数的位置,和左边最小数的位置进行交换 时间复杂度为O(len(num))func maximumSwap(num int) int {numStr := fmt.Sprintf("%d", num)if len(numStr) == 1 {return num}le…

汇编基础,寄存器、指令、函数栈(有栈协程)

ref很好的入门视频教程,基础寄存器和基础指令讲得好,https://www.bilibili.com/video/BV12M4m1o7f6 简化了很多细节,但可以粗略入门,https://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html 也是一个简化版,但是比上一个详细,https://www.cnblogs.com/a…

最大流之上下界可行流

一.无汇源上下界可行流#include<bits/stdc++.h>#define x first #define y second #define endl \n #define int long longusing namespace std;const int N=10010,M=200010,INF=1e15;//根据边的大小,来调整N,M,INFint n,m,S,T; int h[N],e[M],f[M],l[M],ne[M],idx;//l数…

项目中ES踩坑记录

当用到script score query 时,出现java 异常 这种异常多半是对检索出来的数据进行script计算的时候出错了,大多数是空指针异常情况。 解决思路是: 1.在query条件中,将需要script计算的字段的数据过滤掉。比如用到了feature字段进行计算的时候,需要保证feature有值并且是512…

从“bug”到“成就感”——软件工程大冒险

从“bug”到“成就感”——软件工程大冒险 这一学期的《软件工程》简直可以称为我的“技术冒险之旅”。从最初的迷茫,到逐渐掌握核心技能,再到团队合作中的互助与共识,到最后顺利完成项目时的“轻舟已过万重山”,经历了从“bug”到“成就感”的转变,既有汗水,也有欢笑。回…