网站首页 > 技术文章 正文
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
前言
jQuery v3.7.0 已发布,此版本包含众多内容更新,比如:错误修复、新方法和性能改进。 jQuery v3.7.0 放弃了长期使用的选择器引擎 Sizzle,同时将它移到了 jQuery 核心中,从而有助于为未来 jQuery 版本选择的进一步变更做好准备。 但这个技术方案确实使得 jQuery 减少了几个字节的体积,因为 Sizzle 需要支持比 jQuery 更旧的浏览器。
像往常一样,该版本可在 cdn 和 npm 包管理器上下载安装, 其他第三方 CDN 很快也会集成但可能需要一定的时间。
jQuery v3.7.0 新特性
新方法.uniqueSort()
一些 API,如 .prevAll()以相反的顺序返回元素,这在与包装方法一起使用时可能会导致一些令人困惑的行为。 例如,
$elem.prevAll().wrapAll('<p/>');
上面的代码会按预期包装所有元素,但会以相反的顺序将这些元素写入 DOM。 为了防止破坏现有代码的方式解决这个问题,jQuery 记录了 .prevAll() 和类似方法返回倒序集合,这在许多情况下仍然是可取的。 同时 jQuery v3.7.0 还添加了一个新方法,如 .uniqueSort(),该方法与 jQuery.uniqueSort()行为类似。
因此,之前的示例将变为:
$elem.prevAll().uniqueSort().wrapAll('<p/>');
并且 DOM 中的元素顺序将保持不变。
添加了一些无单位的 CSS 属性
jQuery 3.7.0 添加了对更多 CSS 属性的支持,这些属性在没有单位的情况下不应自动添加“px”。 例如.css('aspect-ratio', 5) 会导致 CSS aspect-ratio: 5px;,这次更改很多都来自于 React 的启发。
export const isUnitlessNumber = {
animationIterationCount: true,
aspectRatio: true,
borderImageOutset: true,
borderImageSlice: true,
borderImageWidth: true,
boxFlex: true,
boxFlexGroup: true,
boxOrdinalGroup: true,
columnCount: true,
columns: true,
flex: true,
flexGrow: true,
flexPositive: true,
flexShrink: true,
flexNegative: true,
flexOrder: true,
gridArea: true,
gridRow: true,
gridRowEnd: true,
gridRowSpan: true,
gridRowStart: true,
gridColumn: true,
gridColumnEnd: true,
gridColumnSpan: true,
gridColumnStart: true,
fontWeight: true,
lineClamp: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
scale: true,
tabSize: true,
widows: true,
zIndex: true,
zoom: true,
// SVG-related properties
fillOpacity: true,
floodOpacity: true,
stopOpacity: true,
strokeDasharray: true,
strokeDashoffset: true,
strokeMiterlimit: true,
strokeOpacity: true,
strokeWidth: true,
};
值得注意的是,jQuery v4.0 将改变处理无单位 CSS 属性的方式,不是依赖 CSS 属性列表来避免添加“px”,而是有一个属性列表,当没有传递任何单位时,肯定要添加“px”, 那样更具前瞻性。
操作性能提升
jQuery 3.7.0 在使用 .append() 等操作方法时为某些用例带来了可衡量的性能改进。 当删除不再支持的浏览器的支持测试时,这意味着根本不再需要运行针对文档更改的检查。
从本质上讲,这导致了 0% 到 100% 之间的任何加速。 最显著的加速出现在一些罕见的情况下,在这些情况下,用户经常在不同文档之间切换上下文,可能是通过跨多个 iframe 运行操作。
outerHeight 中的负边距
jQuery v3.3.0 修复了一个问题,在 .innerWidth() 和 .innerHeight() 的计算中包含滚动条。 但是,该修复没有考虑负边距,这意味着 .outerWidth(true) 和 .outerHeight(true) 不再考虑负边距。 在 3.7.0 中通过将边距计算与滚动条调整分开来解决了这个问题。
在 IE 中使用不同的原生焦点事件
焦点和 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/
- 上一篇: CSS3 基础语法(css3常用)
- 下一篇: 前端面试你所必须知道的(前端面试题基础篇)
猜你喜欢
- 2024-11-15 CSS3+JS实现静态圆形进度条(css 圆形进度条)
- 2024-11-15 前端必读榜——如何在React中用SpreadJS导入/导出Excel文件
- 2024-11-15 Svelte教程翻译(六、生命周期)(servelet生命周期阶段)
- 2024-11-15 uniapp(Vue) 实现可粘贴的 个性化验证码 输入框
- 2024-11-15 国产开源,GoLang也可以高效处理Excel的利器了
- 2024-11-15 css精髓:这些布局你都学废了吗?(css布局技术)
- 2024-11-15 Java 中的 AI:使用 Spring Boot 和 LangChain 构建 ChatGPT 克隆
- 2024-11-15 仅用18行JavaScript实现一个倒数计时器
- 2024-11-15 Web上的图片技巧「前端篇」(web网页图片)
- 2024-11-15 55个JS代码让你轻松当大神(完整的js代码)
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-