JQuery

jQuery是一套跨瀏覽器的JavaScript函式庫，用于简化HTML與JavaScript之間的操作。約翰·雷西格（John Resig）在2006年1月的BarCamp NYC上釋出了第一個版本。目前由Dave Methvin领导的团队进行开发。全球前10,000个访问最高的网站中，有65%使用了jQuery，是曾經最受歡迎的JavaScript函式庫。 jQuery是开源软件，使用MIT许可证授权。 jQuery的语法设计使得许多操作变得容易，如操作文档对象（document）、选择文档对象模型（DOM）元素、创建动画效果、处理事件、以及开发Ajax程序。jQuery也提供了给开发人员在其上创建插件的能力。这使开发人员可以对底层交互与动画、高级效果和高级主题化的组件进行抽象化。模块化的方式使jQuery函数库能够创建功能强大的动态网页以及网络应用程序。 微软和诺基亚已宣布在他们的平台上绑定jQuery。微软最初在Visual Studio中集成了jQuery以便在微软自己的ASP.NET AJAX框架和ASP.NET MVC Framework中使用，而诺基亚则在他的Web运行时组件开发平台中集成了jQuery。MediaWiki自从1.16版本后也开始使用jQuery。 jQuery 1.3版以後，引入全新的層疊樣式表（CSS）选择器引擎Sizzle。同時不再提供Packed版本，因為解壓縮所消耗的時間，遠大於所節省的下載時間，且不利於除錯，且已有Google AJAX Libraries API等公開站台提供jQuery的js的引用服务，故Packed版本原本的優點已蕩然無存。 jQuery有下列特色： 使用多浏览器开源选择器引擎Sizzle（jQuery项目的衍生产品）进行DOM元素选择 基于CSS选择器的DOM操作，使用元素的名称和属性（如id和class）作为选择DOM中节点的条件 事件 特效和動畫 Ajax Deferred和Promise对象来控制异步处理 JSON解析 通过插件扩展 工具函数，如特征检测 现代浏览器中原生的兼容性方法，但对于旧版浏览器需要后备（fallback）方法，比如inArray()和each() 多浏览器（不要与跨浏览器混淆）支持 jQuery 3.0及以后版本支持“当前−1版本” 的Firefox、Chrome、Safari、Edge（就是说当前稳定版本以及当前稳定版本之前的一个版本），另外还支持Internet Explorer 9以后的IE版本。在移动端支持iOS 7+和Android 4.0+。 jQuery库是包含所有公共DOM、事件、效果和Ajax函数的一个JavaScript文件。可以通过链接到本地副本或公共服务器提供的许多副本之一把jQuery包含在网页中。jQuery有一个由MaxCDN托管的內容傳遞網路（CDN）。 Google和微软也托管了jQuery。 <script src="jquery.js"></script> 也可以直接从CDN中加载jQuery： <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> jQuery有两种使用风格： 通过jQuery对象的工厂方法$函数。这些函数通常称作命令，使用方法链进行调用，因为它们都返回jQuery对象。 通过$.开头的函数。这些是工具函数，它们不直接作用于jQuery对象。 在jQuery中访问和操作多个DOM节点通常从用CSS选择器字符串调用$函数开始。这会返回一个引用HTML页面中所有匹配元素的jQuery对象。比如$("div.test")，会返回一个拥有class test的所有div元素的jQuery对象。可以通过调用返回的jQuery对象或节点本身的方法来操作这个节点集。 jQuery还有.noConflict()模式，这会释放对$的控制。如果其他的库也使用$作为标识符的话，这个模式会比较有用。在无冲突模式下，开发人员可以使用jQuery替代$而不会缺失任何功能。 通常，jQuery是通过将初始化代码和事件处理函数放入$(handler)中来使用的。当浏览器构建DOM并发送加载事件时触发。 $(function() { // 这个匿名函数是页面加载完成时要调用的函数。 // jQuery代码，事件处理回调写在这里。 }); 或者 $(fn); // 在其他地方定义的名为fn的函数，是页面加载完成时要调用的函数。 或者我们也可以使用 $(document).ready(function() { // 这是页面完成加载时要调用的函数。 // jQuery代码，事件处理回调写在这里。 }); 由于历史原因，$(document).ready(callback)已经成为DOM就绪时运行代码的实质性标志。但jQuery 3.0以后，鼓励开发人员使用更简短的$(handler)标志。 对尚未加载的元素进行事件处理的回调函数可以作为匿名函数在.ready()内部注册。这些事件处理函数只会在触发事件时被调用。例如，下面的代码添加了一个，用于在img图像元素上单击鼠标事件的处理函数。 $(function() { $('img').on('click', function() { // 处理页面中任何img元素上的click事件。 }); }); jQuery命令通常返回一个jQuery对象，因此命令可以链接： $('div.test').add('p.quote').addClass('blue').slideDown('slow'); 这行代码找到了所有class属性为test的div标签，以及所有class属性为quote的p标签的并集，对于所有匹配的元素都增加一个blue的class属性，并用一个动画增加了它们的高度。函数$与add影响匹配的元素有哪些，而addClass和slideDown影响了引用的节点。 一些jQuery函数返回特定的值（例如$('#input-user-email').val()）。在这些情况下，由于该值没有引用jQuery对象，链接将不起作用。 除了通过jQuery对象层次结构访问DOM节点外，如果作为参数传递给$()的字符串看起来像HTML，也可以创建新的DOM元素。例如，这行代码找到ID为carmakes的HTML select元素，并会增加一个value属性为"VAG"、文字为"Volkswagen"的option元素： $('select#carmakes') .append($('<option>') .attr({ value:"VAG" }) .append("Volkswagen")); 带有$.前缀的jQuery函数是工具函数，或者说是影响全局属性和行为的函数。下面的例子使用了函数each()来遍历数组： $.each([1,2,3], function() { console.log(this + 1); }); 这会将“2”，“3”，“4”写入控制台。 使用$.ajax()可以执行跨浏览器的Ajax请求。其相关方法可用于加载和处理远程数据。 $.ajax({ type: 'POST', url: '/process/submit.php', data: { name : 'John', location : 'Boston' }, }).done(function(msg) { alert('Data Saved: ' + msg); }).fail(function(xmlHttpRequest, statusText, errorThrown) { alert('Your form submission failed.\n\n' + 'XML Http Request: ' + JSON.stringify(xmlHttpRequest) + ',\nStatus Text: ' + statusText + ',\nError Thrown: ' + errorThrown); }); 本示例将数据name=John和location=Boston发布到服务器上的/process/submit.php。当这个请求结束时，会调用success函数来提醒用户。如果请求失败，它会提醒用户，告知该请求的状态以及特定的错误。 请注意，上面的例子使用$.ajax() 的延期性来处理它的异步特性：.done()和.fail()创建仅在异步过程完成时才运行的回调。 JQuery目前分成1.x版、2.x版、3.x版，這三種發佈版本，後两种不再支援IE 6/7/8，前者透過jQuery Migrate plugin與先前版本保持相容。 以下项目均是源自于Interface插件 基于jQuery的用户界面库，包括拖放、缩放、对话框、标签页等多个组件。 jQuery Tools是一個第三方的套件，基於jQuery。包括了标签页、表單驗證、滑鼠滾輪事件等多个组件。 基於jQuery的手機網頁製作工具，jQuery Mobile的網站上包含了網頁的設計工具、主題設計工具。另外jQuery Mobile的js插件包含了換頁、事件等的多項功能。 自由软件主题 jQuery UI Prototype JavaScript框架 MooTools（英语：MooTools） jQuery 3.7.1 Released: Reliable Table Row Dimensions. 2023年8月28日.  jQuery: The write less, do more, JavaScript library. The jQuery Project. [29 April 2010]. （原始内容存档于2012-02-29）.  jQuery Usage Statistics. [2013-05-17]. （原始内容存档于2018-12-25）.  Usage of JavaScript libraries for websites. W3Techs. [2010-07-08]. （原始内容存档于2013-06-27）.  License – JQuery JavaScript Library. [2009-11-26]. （原始内容存档于2020-12-13）.  Resig, John. jQuery, Microsoft, and Nokia. jQuery Blog. jQuery. 2008-09-28 [2009-01-29]. （原始内容存档于2012-08-06）.  Guthrie, Scott. jQuery and Microsoft. ScottGu's Blog. 2008-09-28 [2009-01-29]. （原始内容存档于2009-02-01）.  Guarana UI: A jQuery Based UI Library for Nokia WRT. Forum Nokia. [2010-03-30]. （原始内容存档于2009-11-23）.  jQuery. MediaWiki. January 19, 2012 [March 11, 2012]. （原始内容存档于2018-12-25）.  Release:jQuery 1.3. （原始内容存档于2012-12-21） （英语）.  Resig, John. jQuery 1.3 and the jQuery Foundation. jQuery Blog. 2009-01-14 [2009-05-04]. （原始内容存档于2020-12-01）.  Browser Support | jQuery jquery.org, jQuery Foundation -. jQuery CDN. [2018-05-19]. （原始内容存档于2021-02-05）.  Google Libraries API - Developer's Guide. code.google.com. [March 11, 2012]. （原始内容存档于2018-12-25）.  Microsoft Ajax Content Delivery Network. ASP.net. Microsoft Corporation. [June 19, 2012]. （原始内容存档于2020-12-17）.  jQuery.noConflict() jQuery API Documentation. [2020-09-26]. （原始内容存档于2014-09-14）.  jquery.org, jQuery Foundation -. jQuery Core 3.0 Upgrade Guide - jQuery. [2018-05-19]. （原始内容存档于2021-01-21）.  Chesters, James. Long-awaited jQuery 3.0 Brings Slim Build. infoq.com. 2016-06-15 [2017-01-28]. （原始内容存档于2020-11-08）.  jQuery 3.2.0 Is Out!. jQuery Blog. 16 March 2017 [12 March 2018]. （原始内容存档于2020-11-24）.  jQuery 3.4.0 Released. jQuery Blog. 2018-04-10 [2019-04-15]. （原始内容存档于2021-01-15）.  jQuery 3.4.1: triggering focus events in IE and finding root elements in iOS 10. jQuery Blog. jQuery Foundation. [2020-10-21]. （原始内容存档于2020-12-01）.  jQuery 3.5.0 Released!. jQuery Blog. 2020-04-10 [2020-04-11]. （原始内容存档于2020-12-21）.  jQuery 3.5.1 Released: Fixing a Regression. jQuery Blog. jQuery Foundation. [2020-10-21]. （原始内容存档于2020-11-25）.  jQuery 3.6.0 Released!. jQuery Blog. 2020-04-10 [2023-10-23]. （原始内容存档于2021-03-15） （美国英语）.  jQuery 3.6.4 Released: Selector Forgiveness. jQuery Blog. 2023-03-08 [2023-10-23]. （原始内容存档于2023-03-11） （美国英语）.  jquery v3.6.4. [2023-03-08]. （原始内容存档于2023-03-08） （英语）.  jQuery 3.7.0 Released: Staying in Order | Official jQuery Blog. 2023-05-11 [2023-10-23]. （原始内容存档于2023-06-08） （美国英语）.  jQuery 3.7.1 Released: Reliable Table Row Dimensions | Official jQuery Blog. 2023-08-28 [2023-10-23]. （原始内容存档于2023-08-31） （美国英语）.  jquery v3.7.0. bundlephobia.com. [2023-10-23]. （原始内容存档于2023-07-26） （英语）.  存档副本. [2017-11-11]. （原始内容存档于2014-07-21）.  存档副本. [2020-09-26]. （原始内容存档于2019-10-17）.  英文 Learning jQuery, ISBN 1-84719-250-5 jQuery in Action, ISBN 1-933988-35-5 Pro JavaScript Techniques, ISBN 1-59059-727-3 中文 锋利的jQuery , ISBN 978-7-115-20701-2 網頁設計？愛上jQuery, ISBN 978-986-6850-84-4 Learning jQuery中文版，ISBN 978-986-6761-60-7 jQuery UI & Plugins, ISBN 978-986-6551-11-6 你不能錯過的 jQuery 指南 ISBN 9789572244173 jQuery官方网站（页面存档备份，存于互联网档案馆） jQuery UI官方网站（页面存档备份，存于互联网档案馆） jQuery - Google Code （页面存档备份，存于互联网档案馆）（各版本JQuery的下載處） YouTube上的jQuery（2008年4月3日，Google Tech Talks） Github上的jQuery 原始碼 （页面存档备份，存于互联网档案馆）