18岁的 jQuery 依然坚挺? v3.7.0 最新发布!
大家好,很高兴又见面了,我是\”高级前端进阶\”,由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
jQuery v3.7.0 已发布,此版本包含众多内容更新,比如:错误修复、新方法和性能改进。 jQuery v3.7.0 放弃了长期使用的选择器引擎 Sizzle,同时将它移到了 jQuery 核心中,从而有助于为未来 jQuery 版本选择的进一步变更做好准备。 但这个技术方案确实使得 jQuery 减少了几个字节的体积,因为 Sizzle 需要支持比 jQuery 更旧的浏览器。
像往常一样,该版本可在 cdn 和 npm 包管理器上下载安装, 其他第三方 CDN 很快也会集成但可能需要一定的时间。
一些 API,如 .prevAll()以相反的顺序返回元素,这在与包装方法一起使用时可能会导致一些令人困惑的行为。 例如,
上面的代码会按预期包装所有元素,但会以相反的顺序将这些元素写入 DOM。 为了防止破坏现有代码的方式解决这个问题,jQuery 记录了 .prevAll() 和类似方法返回倒序集合,这在许多情况下仍然是可取的。 同时 jQuery v3.7.0 还添加了一个新方法,如 .uniqueSort(),该方法与 jQuery.uniqueSort()行为类似。
因此,之前的示例将变为:
并且 DOM 中的元素顺序将保持不变。
jQuery 3.7.0 添加了对更多 CSS 属性的支持,这些属性在没有单位的情况下不应自动添加“px”。 例如.css(\’aspect-ratio\’, 5) 会导致 CSS aspect-ratio: 5px;,这次更改很多都来自于 React 的启发。
值得注意的是,jQuery v4.0 将改变处理无单位 CSS 属性的方式,不是依赖 CSS 属性列表来避免添加“px”,而是有一个属性列表,当没有传递任何单位时,肯定要添加“px”, 那样更具前瞻性。
jQuery 3.7.0 在使用 .append() 等操作方法时为某些用例带来了可衡量的性能改进。 当删除不再支持的浏览器的支持测试时,这意味着根本不再需要运行针对文档更改的检查。
从本质上讲,这导致了 0% 到 100% 之间的任何加速。 最显著的加速出现在一些罕见的情况下,在这些情况下,用户经常在不同文档之间切换上下文,可能是通过跨多个 iframe 运行操作。
jQuery v3.3.0 修复了一个问题,在 .innerWidth() 和 .innerHeight() 的计算中包含滚动条。 但是,该修复没有考虑负边距,这意味着 .outerWidth(true) 和 .outerHeight(true) 不再考虑负边距。 在 3.7.0 中通过将边距计算与滚动条调整分开来解决了这个问题。
焦点和 blur 事件可能是 jQuery 必须跨浏览器处理的最复杂的事件。 jQuery 3.4.0 在修复通过焦点事件传递数据的问题时引入了一些小的回归,在 jQuery 3.7.0 中移除了这些修改。
但是,需要指出 IE 中可能发生的重大变化。 在所有版本的 IE 中,焦点和 blur 事件都是异步触发的。 在所有其他浏览器中,这些事件是同步触发的,IE 中的异步行为导致了一些问题。 解决方法是更改本机使用的事件。 幸运的是,focusin 和 focusout 在 IE 中是同步运行的,所以现在在 IE 中通过 focusin 模拟焦点,通过 focusout 模拟 blur。 这一更改使 jQuery 能够依赖 IE 中的同步焦点事件,这解决了很多问题。
https://blog.jquery.com/2023/05/11/jquery-3-7-0-released-staying-in-order/
JavaScript学习笔记(三十二)—jQuery(中)
jQuery
- 昨天讲了 jQuery 的基本选择器筛选器和属性操作
- 今天来说一些 jQuery 别的东西
元素操作
- 创建一个元素
- 内部插入元素
- 外部插入元素
- 替换元素
- 删除元素
- 克隆元素
元素尺寸
- 操作元素的宽和高
- 获取元素的内置宽和高
- 获取元素的外置宽和高
元素位置
- 元素相对页面的位置
- 元素相对于父元素的偏移量
- 获取页面卷去的高度和宽度
元素事件
- 绑定事件的方法
- 移除事件
- 只能执行一次的事件
- 直接触发事件
可以直接使用的常见事件
- 可以直接使用的事件就是可以不利用 on 来绑定,直接就可以使用的事件方法
- click
- dblclick
- scroll
- hover
动画
- show
- hide
- toggle
- animate
- stop
- finish
jQuery
jQuery是对JavaScript的封装,它是免费、开源的JavaScript函数库,jQuery 极大地简化了 JavaScript 编程
jQuery和JavaScript它们的作用一样,都是负责网页行为操作,增加网页和用户的交互效果的,只不过jQuery简化了JavaScript编程,jQuery实现交互效果更简单
jQuery的下载地址:
https://code.jquery.com
jQuery引入
jQuery的入口函数:
我们知道使用js获取标签元素,需要页面加载完成以后再获取,我们通过使用onload事件来获取标签元素
而jQuery提供了ready函数来解决这个问题,保证获取标签元素没有问题,它的速度比原生的 window.onload 更快
jquery选择器就是快速选择标签元素,获取标签的,选择规则和css选择器一样
jQuery选择器的种类:
- 标签选择器是根据标签名来选择标签
- 类选择器是根据类名来选择标签
- id选择器是根据id来选择标签
- 层级选择器是根据层级关系来选择标签
- 属性选择器是根据属性名来选择标签
判断标签是否选择成功:
可以使用length属性来判断标签是否选择成功, 如果length大于0表示选择成功,否则选择失败
选择集过滤就是在选择标签的集合里面过滤自己需要的标签
①has(选择器名称)方法,表示选取包含指定选择器的标签
②eq(索引)方法,表示选取指定索引的标签
选择集转移就是以选择的标签为参照,然后获取转移后的标签
$(\’#box\’).prev(); 表示选择id是box元素的上一个的同级元素
$(\’#box\’).prevAll(); 表示选择id是box元素的上面所有的同级元素
$(\’#box\’).next(); 表示选择id是box元素的下一个的同级元素
$(\’#box\’).nextAll(); 表示选择id是box元素的下面所有的同级元素
$(\’#box\’).parent(); 表示选择id是box元素的父元素
$(\’#box\’).children(); 表示选择id是box元素的所有子元素
$(\’#box\’).siblings(); 表示选择id是box元素的其它同级元素
$(\’#box\’).find(\’.myClass\’); 表示选择id是box元素的class等于myClass的元素
获取和设置元素的内容使用: html方法
给指定元素追加html内容使用: append方法
获取和修改标签样式:
使用css方法可以给标签设置样式属性
获取和设置标签属性:
通过prop方法来完成
获取和设置元素的value属性:
通过val方法来完成,更加简单和方便
常用事件:
click() 鼠标单击
blur() 元素失去焦点
focus() 元素获得焦点
mouseover() 鼠标进入(进入子元素也触发)
mouseout() 鼠标离开(离开子元素也触发)
ready() DOM加载完成
事件代理:
事件代理就是使用父元素来代理子元素的事件,好处是减少事件的绑定次数,提高性能
事件代理使用场景:
使用场景当多个相同的子元素绑定同一个事件,可以使用事件代理
事件代理方法:
事件代理是使用delegate方法来完成
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等都可以认为是对象,此外,JavaScript 允许自定义对象,对象可以拥有属性和方法
创建自定义javascript对象有两种方式:
①通过顶级Object类型来实例化一个对象
②通过对象字面量创建一个对象
(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式
采用完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使
得 JSON 成为理想的数据交换语言
JSON的优点:
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
JSON的格式:
①对象格式
②数组格式
对象格式:
对象格式的JSON数据,使用一对大括号({}),大括号里面放入key:value形式的键值对,多个键值对使用逗号分隔
数组格式:
数组格式的JSON数据,使用一对中括号([]),中括号里面的数据使用逗号分隔
JSON本质上是字符串,如果在js中操作JSON数据,可以将JSON字符串转化为JavaScript对象
一次完整的请求后,浏览器会接受到html,css,js,图片等大量的数据
ajax的介绍
ajax 是 Asynchronous JavaScript and XML的简写,ajax一个前后台配合的技术,它可以让 javascript 发送异步的 http 请求,与后台通信进行数据的获取,ajax 最大的优点是实现局部刷新,ajax可以发送http请求,当获取到后台数据的时候更新页面显示数据实现局部刷新,在这里大家只需要记住,当前端页面想和后台服务器进行数据交互就可以使用ajax了
ajax的实现
jquery将它封装成了一个方法$.ajax()
我们可以直接用这个方法来执行ajax请求
ajax方法的参数说明:
url 请求地址
type 请求方式,默认是\’GET\’,常用的还有\’POST\’
dataType 设置返回的数据格式,常用的是\’json\’格式
data 设置发送给服务器的数据,没有参数不需要设置
success 设置请求成功后的回调函数
error 设置请求失败后的回调函数
async 设置是否异步,默认值是\’true\’,表示异步,一般不用写
ajax的简写方式:
$.ajax按照请求方式可以简写成
$.get或者$.post方式
$.get和$.post方法的参数说明:
$.get(url,data,success(data, status, xhr),dataType).error(func)$.post(url,data,success(data, status, xhr),dataType).error(func)
url 请求地址
data 设置发送给服务器的数据,没有参数不需要设置
success 设置请求成功后的回调函数
data 请求的结果数据
status 请求的状态信息, 比如: \”success\”
xhr 底层发送http请求XMLHttpRequest对象
dataType 设置返回的数据格式
\”xml\”
\”html\”
\”text\”
\”json\”
error 表示错误异常处理
func 错误异常回调函数
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。