亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

深度解析 jQuery 3:17 大新特性与最佳实践指南

jQuery 问世逾十载,长盛不衰。2015 年 7 月发布 3.0 首个 Alpha,历时近两年打磨。当前版本 3.1.1 修复大量 Bug、新增方法、移除废弃函数、调整部分行为。本文逐一拆解 17 项新特性与用法。

17. .hide()/.show()/.toggle() 优化

为兼容响应式设计,隐藏元素性能提升 2%(54 样本测试)。三方法改关注 内联样式 而非计算样式,更尊重样式表 display 值,CSS 规则可随窗口缩放/设备旋转动态生效。

$("#showr").click(function() {
  $("div").first().show("fast", function showNext() {
    $(this).next("div").show("fast", showNext);
  });
});
$("#hidr").click(function() {
  $("div").hide(1000);
});

16. .wrapAll() 与 .unwrap() 增强

.wrapAll(function) 现仅调用一次函数,用返回字符串包裹整个集合(jQuery 2 表现同 .wrap())。.unwrap() 新增可选选择器参数:unwrap([selector]),匹配父元素内的子元素选择性解包。

jQuery("div").wrapAll(function() {
  return "

"; });

15. 尺寸计算纳入滚动条宽高

jQuery 2 中 $(window).width() 返回内容宽(不含滚动条)。为与 CSS 媒体查询一致,$(window).outerWidth() 与 outerHeight() 现包含滚动条尺寸,等同 window.innerWidth。

14. .data() 键名驼峰化

对齐 Dataset API 规范:.data() 现将所有键名转为驼峰命名。'custom-property' 存入后读出为 customProperty(旧版保留连字符小写)。

13. 类操作支持 SVG

jQuery 仍不完全支持 SVG,但操作 CSS 类名的方法(.hasClass()、.addClass() 等)现可作用于 SVG 文档。可增删切换/查找 SVG 类再用 CSS 样式化。

12. :visible/:hidden 选择器语义调整

现在认为拥有任意布局盒(含零宽高)的元素为 :visible。<br>、无内容内联元素均会被选中。示例:<section></section> <div></div> <br/> 在 jQuery 1/2 中 console.log($('body :visible').length) 返回 0,jQuery 3 返回 3。

11. .width()/.height() 返回浮点数

浏览器支持时返回浮点值而非整数,利于亚像素精度布局。示例:容器 100px 内三等分子元素,旧版返回 33,新版返回 33.3333333。

10. 新增 XSS 防护层

$.ajax() 与 $.get() 需显式指定 dataType:"script",防止远程站点先返回非脚本内容再注入恶意脚本。$.getScript() 已显式设置不受影响。

9. 单一 # 选择器抛出语法错误

jQuery("#") 与 .find("#") 现直接抛错(旧版前者返回空集合,后者报错)。

8. $.escapeSelector() 转义选择器特殊字符

转义 ID/类名中的特殊字符(如分号、点)。$("#" + $.escapeSelector("abc.xyz")) 可选中 id 为 "abc.xyz" 的元素。

7. $.when() 支持 Thenable

传入带 then() 的参数视为 Promise 兼容 thenable,兼容 Bluebird/ES6 Promise,便于编写复杂异步回调。多参数调用行为类同 Promise.all,单/零参数类同 Promise.resolve。不再传递输入 Deferred 的进度通知。

6. AJAX URL 保留哈希片段

$.ajax() 现将完整 URL(含 #hash)传给传输层。若服务端不支持哈希,需手动移除后再发送。

5. Deferred 对象兼容 Promises/A+ 规范

关键变更:.then() 内抛出的异常会被捕获转为拒绝值;拒绝处理器返回非 thenable 值转为履行值。示例对比旧式 .done()/.fail() 与新式 .then()/.catch() 行为差异。

4. 动画采用 requestAnimationFrame API

动画更流畅、CPU 占用更低。仅在支持浏览器启用,IE9 等旧浏览器回退旧 API。

3. 严格模式构建

jQuery 3 代码基于严格模式编写,但不强制用户代码严格模式,迁移无需重写。例外:ASP.NET 4.0 使用 arguments.caller.callee 追踪调用栈,不兼容严格模式,建议继续用 jQuery 2.x。现代浏览器已支持 error.stack。

2. $.get()/$.post() 新签名对齐 $.ajax()

新签名为 $.get([settings]) / $.post([settings]),settings 对象属性同 $.ajax(),唯 method 属性被忽略(GET/POST 预设)。示例:传 method:'POST' 仍发 GET 请求。

1. 支持 ES6 for...of 循环

可遍历 Map、Set、Array 等可迭代对象,循环变量直接为 jQuery 集合中的 DOM 元素。可替代 $.each() 简化遍历。示例:为所有 <input> 赋 id。

// jQuery 2
var $inputs = $('input');
for(var j=0; j<$inputs.length; j++) { $inputs[j].id = 'input-' + j; }

// jQuery 3
var $inputs = $('input');
var j = 0;
for(var input of $inputs) { input.id = 'input-' + j++; }

工业技术

  1. 防弹材料全指南:现代防护技术深度解析
  2. 精准热处理赋能熔模铸件:提升性能的关键工艺全解析
  3. 供应链分析:驱动智能制造的核心引擎
  4. 决定PCB真实成本的9大关键因素深度解析
  5. 读懂泄漏检测与修复(LDAR):定义、法规与行业影响
  6. 尼龙 3D 打印全攻略:性能、挑战与最佳实践
  7. 水厂设备制造间接成本降低的5大经验维护策略
  8. 铜钎焊完全指南:工艺对比、操作步骤与实战技巧
  9. 掌握 Autodesk Fusion 360 四轴加工:进阶技巧与刀具路径包裹
  10. TIP31C 晶体管引脚与技术指南:NPN 功率应用
  11. 制造商玩转Instagram:10亿视觉流量池捕获Z世代人才与订单
  12. 光伏板接12V直流负载与电池接线全指南