JavaScript开发框架-jQuery
2010-10-17 10:46:44 阿炯

jQuery是一款开放源代码的JavaScript代码库,由John Resig创建。授权协议为GPLMIT许可证双协议。


jQuery is a new kind of JavaScript Library.

jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.

* Lightweight Footprint
About 24KB in size (Minified and Gzipped)

* CSS3 Compliant
Supports CSS 1-3 selectors and more!

* Cross-browser
IE 6.0+, FF 2+, Safari 3.0+, Opera 9.0+, Chrome


最新版本:2.0
将不支持 IE 6/7/8 浏览器,因此该版本更小、更快。但别担心,jQuery 团队将继续对 1.x 版本分支进行维护。

最新版本:3.0
jQuery 3.0将是jQuery的未来。但如果你需要IE6-8支持,您可以继续使用最新版本1.12。为了帮助用户升级,jQuery 发布了全新的3.0升级指南,以及 jQuery Migrate 3.0 插件将帮助您识别代码中的兼容性问题。

最新版本:3.5
jQuery 3.5.1 已发布,此版本修复了针对 3.5.0 的回归错误。具体来说就是,在此前的版本中将内部数据对象改为使用Object.create( null )而非普通对象 ({})。之所以这样做是为了防止与 Object.prototype 属性上的 key 发生冲突。然而,这也意味着用户(尤其是插件)无法再使用原生的 .hasOwnProperty 方法来检查 jQuery 数据中的内容,导致破坏部分代码。目前已恢复了这个改动,但官方计划在 jQuery 4.0 中再放回去。这个改动也是此版本中唯一的代码改动,其他的改动包括对文档和构建系统的一些小更新。上个版本 jQuery 3.5.0 修复了 jQuery DOM 操作方法中出现的两个安全问题,例如.html(), .append()以及其他的 DOM 操作方法。第一个问题已在 jQuery 3.5.0 发布公告中解释过,现在解释一下第二个安全问题。

第二个问题与第一个问题非常相似,这是一个 XSS 漏洞,与传递<option>元素到 jQuery 的 DOM 操作方法有关。本质上,这是使用了一个正则表达式来包裹<option>元素与<select>元素,以确保这些元素在旧版本 IE 中得到正确解析。目前的解决方法是只在需要的地方应用这些代码。幸运的是,由于 IE9 中的解析行为不同,因此可以在 IE9 中保留这个安全修复,而不会暴露在其他浏览器的漏洞中。更多详情可查看主页上的发行公告。

最新版本:3.7
3.7.0 已正式于2023年5月中旬发布。更新内容包括修复错误、引入新方法,以及提升性能。其中值得关注的一项变化是放弃了长期使用的选择器引擎 Sizzle —— jQuery 不再依赖于作为单独项目的 Sizzle。开发者表示他已经将 Sizzle 移动至 jQuery 内部,将其代码直接放到 jQuery 核心。据称这有助于为未来 jQuery 版本中选择器的重要变化做好准备。虽然现在意义不大,但 jQuery 体积减少了几个字节。因为 Sizzle 支持比 jQuery 更旧的浏览器。

提升操作性能方面,jQuery 3.7.0 在使用 .append() 等操作方法时,对某些用例带来了可衡量的性能改进。开发者称,当删除不再支持的浏览器的测试支持时,这意味着不再需要运行针对文档更改的检查。从本质上讲,这带来了 0% 到 100% 之间的任何加速。最显着的加速将出现在一些罕见的情况下,在这些情况下,用户经常在不同文档之间切换上下文,可能是通过跨多个 iframe 运行操作。其他主要变化:添加新方法.uniqueSort()、新增一些 unitless CSS 属性、在 IE 中使用不同的原生焦点事件。更多详情查看发行公告

4.0 beta 现已于2024年2月中旬发布,进行了一些错误修复、性能改进和一些破坏性变更。发行公告指出,其中很多突破性变更都是团队多年来一直想做的,但却无法在补丁或小版本中实现的。新版本删减了遗留代码,移除了一些以前已经弃用的 API,移除了一些从未记录在案的 public functions 的 internal-only 参数,并放弃了对一些过于复杂的 "magic" 行为的支持。一些更新内容包括:
不再支持 IE 10 及更早版本。按照分阶段取消支持计划,预计下一步将在 jQuery 5.0 中取消对 IE 11 的支持。同时还放弃了对其他旧版浏览器的支持,包括 Edge Legacy、iOS <11、Firefox <65 和 Android 浏览器。对于还有需要的用户,则可以选择继续坚持使用 jQuery 3.x。删除了已弃用的 API
jQuery.cssNumber,cssProps,isArray,parseJSON,nodeName,isFunction,isWindow,camelCase,type,now,isNumeric,trim,fx.interval

删除了 push, sort 以及 splice
jQuery 原型中的 Array 方法 push, sort 以及 splice 已经被删除。这些方法的行为与任何其他 jQuery 方法不同,并且始终是 internal-use only。目前,这些方法已转换为等效的 Array 函数。例如,$elems.push( elem ) 变成了 [].push.call( $elems, elem )。

focusin 和focosout event order
长期以来,浏览器对 focus 和 blur 事件的顺序(包括 focusin、focusout、focus 和 blur)并不一致。jQuery 4.0 支持的所有浏览器的最新版本都趋向于统一事件顺序。但是它与 jQuery 多年前选择的一致顺序不同,所以促使这一改变变成了一个破坏性的变更。在以前的版本中对所有四个事件的顺序是:
1.focusout
2.blur
3.focusin
4.focus

从 jQuery 4.0 开始,不再 override native behavi。这意味着除 IE 之外的所有浏览器都将遵循当前的 W3C 规范。

FormData 支持
jQuery.ajax 添加了对二进制数据的支持,包括 FormData。

此外,jQuery 4.0 还删除了自动 JSONP 升级、将 jQuery source 迁移至 ES 模块;以及添加了对 Trusted Types 的支持,确保以 TrustedHTML 封装的 HTML 能以不违反 require-trusted-types-for 内容安全策略指令的方式用作 jQuery 操作方法的输入。由于删除了 Deferreds 和 Callbacks(现在压缩后不到 20k 字节),jQuery 4.0.0 的 slim build 变得更加小巧。更多详情可查看官方公告。


官方主页:http://jquery.com/


------------------------------
jQuery UI
jQuery UI 是一套 jQuery 的页面 UI 插件,基于MIT/GPL授权协议,包含很多种常用的页面空间,例如 Tabs、拉帘效果、对话框、拖放效果、日期选择、颜色选择、数据排序、窗体大小调整等等非常多的内容。



jQuery UI provides abstractions for low-level interaction and animation, advanced effects and high-level, themeable widgets, built on top of the jQuery JavaScript Library, that you can use to build highly interactive web applications.


最新版本:1.8
修复了自动完成、日期选择、对话框、进度条、大小变化、滑动块和tabs的一些bug。

最新版本:3.6
jQuery 3.6.0 已于2021年3月初正式发布,此版本不包含安全修复程序,但具有一些错误修复和改进。以下是 jQuery 3.6.0 的更新亮点:
即使存在 JSONP 错误也返回 JSON,在以前的版本中,当 JSONP 请求返回错误时,返回通常仍是一个可执行脚本。3.6.0 版本已经更改了默认行为,以尝试在这种情况下执行脚本。当遇到错误时,正常的脚本仍将被跳过。

修正:一个值得强调的 bug 是关于将焦点重定向到焦点处理程序中的另一个元素。以这个例子为例,一个焦点处理程序在另一个焦点处理程序中被触发。
elem1.on("focus",function(){
  elem2.trigger("focus");
});

由于它们在 IE 之外的所有地方都具有同步特性,因此在 3.4.0 中添加了一个利用本地事件的修复程序,导致该本地.focus()方法在初始元素中被最后调用,从而使其失去了焦点。尽管代码继续利用本机焦点和模糊事件,但我们能够通过与本机方法进行更多的匹配并仅将最后一个焦点事件传播到 DOM tree 中来解决此问题。其他错误修复和改进包括:修复了在 Firefox 中检索表格行的维度;修复了在已删除元素上触发焦点事件时,Chrome崩溃的问题;对某些测试进行了多项改进等。下面是完整的变更日志:
Ajax:执行 JSONP 错误脚本响应
Core:在 parseXML 报告浏览器错误,恢复对 jQuery 3.x 的 QtWebKit 支持
Deferred:将 master 重命名为 primary
Dimensions:修改 reliableTrDimensions 支持测试,以考虑到 FF
Docs:将 JS Foundation 提及的内容更改为 OpenJS Foundation
Event:使焦点重新触发而不是将原来的元素聚焦回来;如果一个元素在模糊时被移除,不会崩溃
Selector:将 Sizzle 从 2.3.5 更新到 2.3.6
Support:确保支持 div 的 display 设置为block

Tests
修正没有数据类型的脚本不自动执行的测试
跳过 Legacy Edge 中的 jQuery.parseXML 错误报告测试
修正 jQuery.parseXML 错误报告测试
在 Node.js mock 服务器中识别带点的回调
跳过 Safari 中的 "jQuery.ajax() on unload"测试
删除一个未使用的局部变量
删除剩余的过时 jQuery.cache 引用
删除过时的 jQuery 数据测试

更多详情可查看此处

最新版本:1.13
jQuery UI 1.13.0 已于2021年10月上旬正式发布。此版本的主要更新重点是提升与最近发布的 jQuery 版本的兼容性,因此开发团队将大多数破坏性变更(例如删除已弃用的 API 和删除旧版浏览器支持)推迟到了未来版本。其他更新内容包括:

修复部分安全问题
删除被废弃使用的 jQuery API。当使用 jQuery Migrate 3.3.2 对 jQuery 3.6.0 运行其测试套件时,jQuery UI 1.13 不会触发 jQuery Migrate 警告,即此版本发布时的最新版本。
取消对 jQuery 1.7 的支持;不过仍然支持 jQuery 1.8 和更高版本。
在此版本中,下载生成器生成的所有单独模块文件以及捆绑的 jQuery UI 副本的所有代码都在严格模式下运行。这对大多数用户来说并不重要,因为自 2016 年发布 3.0 以来,jQuery 一直在严格模式下运行。

除此之外,还添加了两个小功能:
Accordion的 header 选项现在不仅可以接受匹配 header 元素的选择器,还可以接受一个以 accordion 元素为参数并返回 header 元素的函数;详情查看文档。
日期选择器选项现在包括可选的 onUpdateDatepicker 回调,当日期选择器小部件的 DOM 更新时会调用。

开发团队还提到,为了简化 jQuery UI 的维护,他们正在淘汰 https://bugs.jqueryui.com 上的旧错误跟踪器(将其保持为只读模式),未来将通过 GitHub issue 处理和跟踪 bug。

在过去的几年里,jQuery UI 一直在努力寻找贡献者;他们的目标是将其更多地转移到维护状态:确保该库与新的 jQuery 版本兼容,并且安全问题得到修复,但没有计划开发新的重要功能。开发团队还将尝试修复 jQuery UI 1.12.1 的重要回归错误;不过较旧的长期错误可能无法修复。

详细更新说明查看发行说明

------------------------------
jQuery实现在线预览PDF文件

Web实现在线预览PDF文件,可通过jquery.media实现,首先引入jQuery和jQuery.media库即可实现pdf文档在线预览。



项目主页:http://jqueryui.com/

该文章最后由 阿炯 于 2024-02-12 20:40:12 更新,目前是第 6 版。