For faster navigation, this Iframe is preloading the Wikiwand page for jQuery.

jQuery

此条目或章节需要时常更新。有关事物或许会随着时间而有所变化。未有可靠来源臆测内容可能会被移除。若您发现有尚未更新之处,欢迎您编辑更新
jQuery
原作者约翰·雷西格
开发者jQuery Team
首次发布2006年8月26日,​17年前​(2006-08-26
当前版本3.7.1[1]在维基数据编辑(2023年8月28日,10个月前)
原始码库 编辑维基数据链接
编程语言JavaScript
类型网页应用程式框架
许可协议MIT许可证
网站jquery.com

jQuery是一套跨浏览器JavaScript函式库,用于简化HTML与JavaScript之间的操作。[2]约翰·雷西格John Resig)在2006年1月的BarCamp NYC上发布了第一个版本。目前由Dave Methvin领导的团队进行开发。全球前10,000个访问最高的网站中,有65%使用了jQuery,是曾经最受欢迎的JavaScript函式库[3][4]

简介

jQuery是开源软件,使用MIT许可证授权。[5] jQuery的语法设计使得许多操作变得容易,如操作文档对象(document)、选择文档对象模型DOM)元素、创建动画效果、处理事件、以及开发Ajax程序。jQuery也提供了给开发人员在其上创建插件的能力。这使开发人员可以对底层交互与动画、高级效果和高级主题化的组件进行抽象化。模块化的方式使jQuery函数库能够创建功能强大的动态网页以及网络应用程式

微软诺基亚已宣布在他们的平台上绑定jQuery。[6]微软最初在Visual Studio中集成了jQuery[7]以便在微软自己的ASP.NET AJAX框架和ASP.NET MVC Framework中使用,而诺基亚则在他的Web运行时组件开发平台中集成了jQuery[8]MediaWiki自从1.16版本后也开始使用jQuery[9]

jQuery 1.3版以后,引入全新的层叠样式表CSS)选择器引擎Sizzle。[10]同时不再提供Packed版本,因为解压缩所消耗的时间,远大于所节省的下载时间,且不利于调试,且已有Google AJAX Libraries API等公开站台提供jQuery的js的引用服务,故Packed版本原本的优点已荡然无存。

特色

jQuery有下列特色:

  • 使用多浏览器开源选择器引擎Sizzle(jQuery项目的派生产品)进行DOM元素选择[11]
  • 基于CSS选择器的DOM操作,使用元素的名称和属性(如id和class)作为选择DOM中节点的条件
  • 事件
  • 特效和动画
  • Ajax
  • Deferred和Promise对象来控制异步处理
  • JSON解析
  • 通过插件扩展
  • 工具函数,如特征检测
  • 现代浏览器中原生的兼容性方法,但对于旧版浏览器需要后备(fallback)方法,比如inArray()each()
  • 多浏览器(不要与跨浏览器混淆)支持

浏览器支持

jQuery 3.0及以后版本支持“当前−1版本” 的FirefoxChromeSafariEdge(就是说当前稳定版本以及当前稳定版本之前的一个版本),另外还支持Internet Explorer 9以后的IE版本。在移动端支持iOS 7+和Android 4.0+。[12]

用法

加载jQuery

jQuery库是包含所有公共DOM、事件、效果和Ajax函数的一个JavaScript文件。可以通过链接到本地副本或公共伺服器提供的许多副本之一把jQuery包含在网页中。jQuery有一个由MaxCDN托管的内容分发网络(CDN)。[13] Google和微软也托管了jQuery。[14][15]

<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对象的工厂方法$函数。这些函数通常称作命令,使用方法链英语method chaining进行调用,因为它们都返回jQuery对象。
  • 通过$.开头的函数。这些是工具函数,它们不直接作用于jQuery对象。

在jQuery中访问和操作多个DOM节点通常从用CSS选择器字符串调用$函数开始。这会返回一个引用HTML页面中所有匹配元素的jQuery对象。比如$("div.test"),会返回一个拥有class test的所有div元素的jQuery对象。可以通过调用返回的jQuery对象或节点本身的方法来操作这个节点集。

无冲突模式

jQuery还有.noConflict()模式,这会释放对$的控制。如果其他的库也使用$作为标识符的话,这个模式会比较有用。在无冲突模式下,开发人员可以使用jQuery替代$而不会缺失任何功能。[16]

典型的代码开头

通常,jQuery是通过将初始化代码和事件处理函数放入$(handler)中来使用的。当浏览器构建DOM并发送加载事件时触发。

$(function() {
    // 这个匿名函数是页面加载完成时要调用的函数。
    // jQuery代码,事件处理回调写在这里。
});

或者

$(fn); // 在其他地方定义的名为fn的函数,是页面加载完成时要调用的函数。

或者我们也可以使用

$(document).ready(function() {
    // 这是页面完成加载时要调用的函数。
    // jQuery代码,事件处理回调写在这里。
});

由于历史原因,$(document).ready(callback)已经成为DOM就绪时运行代码的实质性标志。但jQuery 3.0以后,鼓励开发人员使用更简短的$(handler)标志。[17]

对尚未加载的元素进行事件处理的回调函数可以作为匿名函数.ready()内部注册。这些事件处理函数只会在触发事件时被调用。例如,下面的代码添加了一个,用于在img图像元素上单击滑鼠事件的处理函数。

$(function() {
    $('img').on('click', function() {
        // 处理页面中任何img元素上的click事件。
    });
});

链接(Chaining)

jQuery命令通常返回一个jQuery对象,因此命令可以链接:

$('div.test').add('p.quote').addClass('blue').slideDown('slow');

这行代码找到了所有class属性为testdiv标签,以及所有class属性为quotep标签的并集,对于所有匹配的元素都增加一个blue的class属性,并用一个动画增加了它们的高度。函数$add影响匹配的元素有哪些,而addClassslideDown影响了引用的节点。

一些jQuery函数返回特定的值(例如$('#input-user-email').val())。在这些情况下,由于该值没有引用jQuery对象,链接将不起作用。

创建新的DOM元素

除了通过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请求。其相关方法可用于加载和处理远程数据。

$.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=Johnlocation=Boston发布到伺服器上的/process/submit.php。当这个请求结束时,会调用success函数来提醒用户。如果请求失败,它会提醒用户,告知该请求的状态以及特定的错误。

异步

请注意,上面的例子使用$.ajax() 的延期性来处理它的异步特性:.done().fail()创建仅在异步过程完成时才运行的回调。

发布版本

JQuery目前分成1.x版、2.x版、3.x版,这三种发布版本,后两种不再支持IE 6/7/8,前者透过jQuery Migrate plugin与先前版本保持兼容。

版本号 发布日期 最新更新 大小(KB) 备注
1.0 2006年8月26日 (2006-08-26) 第一个稳定版本
1.1 2007年1月14日 (2007-01-14)
1.2 2007年9月10日 (2007-09-10) 1.2.6 54
1.3 2009年1月14日 (2009-01-14) 1.3.2 55.9 将Sizzle选择器引擎引入核心
1.4 2010年1月14日 (2010-01-14) 1.4.4 76
1.5 2011年1月31日 (2011-01-31) 1.5.2 83 延迟回调管理,ajax模块重写
1.6 2011年5月3日 (2011-05-03) 1.6.4 89 显著改善attr()与val()的性能
1.7 2011年11月3日 (2011-11-03) 1.7.2 (2012年3月21日 (2012-03-21)) 92 新的事件API:.on()和.off(),而旧的API仍然支持。
1.8 2012年8月9日 (2012-08-09) 1.8.3 (2012年11月13日 (2012-11-13)) 91.4 重写Sizzle选择器引擎,改善动画和$(html, props)的灵活性。
1.9 2013年1月15日 (2013-01-15) 1.9.1 (2013年2月4日 (2013-02-04)) 90 移除弃用接口,清理代码
1.10 2013年5月24日 (2013-05-24) 1.10.2 (2013年7月3日 (2013-07-03)) 91 修复了1.9和2.0 beta版本周期的bug和差异
1.11 2014年1月24日 (2014-01-24) 1.11.3 (2015年4月28日 (2015-04-28)) 95.9
1.12 2016年1月8日 (2016-01-08) 1.12.4 (2016年5月20日 (2016-05-20)) 95
2.0 2013年4月18日 (2013-04-18) 2.0.3 (2013年7月3日 (2013-07-03)) 81.1 除去对IE 6-8的支持以提高性能,并降低文件大小
2.1 2014年1月24日 (2014-01-24) 2.1.4 (2015年4月28日 (2015-04-28)) 82.4
2.2 2016年1月8日 (2016-01-08) 2.2.4 (2016年5月20日 (2016-05-20)) 85.6
3.0 2016年6月9日 (2016-06-09)[18] 3.0.0 (2016年6月9日 (2016-06-09)) 86.3 Deferred、$.ajax、$.when支持Promises/A+,令.data()兼容HTML5
3.1 2016年7月7日 (2016-07-07) 3.1.1 (2016年9月23日 (2016-09-23)) 86.3 加入jQuery.readyException,ready handler错误现在不会不显示了
3.2 2017年3月16日 (2017-03-16)[19] 3.2.1 (2017年3月20日 (2017-03-20)) 84.6 增加了对检索<template>元素内容的支持,弃用了多种旧方法。
3.3 2018年1月19日 (2018-01-19) 3.3.1 (2018年1月20日 (2018-01-20)) 84.8 弃用旧函数,函数现在可以接受类,并支持其写成数组格式。
3.4 2019年4月10日 (2019-04-10)[20] 3.4.1 (2019年5月1日 (2019-05-01))[21] 86.1 改进性能,增加noncenomodule,修复radio elements
3.5 2020年4月10日 (2020-04-10)[22] 3.5.1 (2019年5月4日 (2019-05-04))[23] 87.4 安全性更新,以.even().odd()代替:even:odd,弃用jQuery.trim
3.6 2021年3月2日 (2021-03-02)[24] 3.6.4 (2023年3月8日 (2023-03-08))[25] 88.2[26] 错误修正,当发生JSONP错误时返回JSON,兼容新版Chrome选择器。
3.7 2023年5月11日 (2023-05-11)[27] 3.7.1 (2023年8月28日 (2023-08-28))[28] 85.4[29] 添加了 .uniqueSort() 方法,性能优化,优化 .outerWidth(true).outerHeight(true) 对负边距的处理,焦点修复。

子项目

以下项目均是源自于Interface插件

jQuery UI

基于jQuery的用户界面库,包括拖放缩放对话框标签页等多个组件。

jQuery Tools

jQuery Tools是一个第三方的包,基于jQuery。包括了标签页、窗体验证、滑鼠滚轮事件等多个组件。[30]

jQuery Mobile

基于jQuery的手机网页制作工具,jQuery Mobile的网站上包含了网页的设计工具、主题设计工具。另外jQuery Mobile的js插件包含了换页、事件等的多项功能。[31]

参阅

竞品

参考文献

  1. ^ jQuery 3.7.1 Released: Reliable Table Row Dimensions. 2023年8月28日. 
  2. ^ jQuery: The write less, do more, JavaScript library. The jQuery Project. [29 April 2010]. (原始内容存档于2012-02-29). 
  3. ^ jQuery Usage Statistics. [2013-05-17]. (原始内容存档于2018-12-25). 
  4. ^ Usage of JavaScript libraries for websites. W3Techs. [2010-07-08]. (原始内容存档于2013-06-27). 
  5. ^ License – JQuery JavaScript Library. [2009-11-26]. (原始内容存档于2020-12-13). 
  6. ^ Resig, John. jQuery, Microsoft, and Nokia. jQuery Blog. jQuery. 2008-09-28 [2009-01-29]. (原始内容存档于2012-08-06). 
  7. ^ Guthrie, Scott. jQuery and Microsoft. ScottGu's Blog. 2008-09-28 [2009-01-29]. (原始内容存档于2009-02-01). 
  8. ^ Guarana UI: A jQuery Based UI Library for Nokia WRT. Forum Nokia. [2010-03-30]. (原始内容存档于2009-11-23). 
  9. ^ jQuery. MediaWiki. January 19, 2012 [March 11, 2012]. (原始内容存档于2018-12-25). 
  10. ^ Release:jQuery 1.3. (原始内容存档于2012-12-21) (英语). 
  11. ^ Resig, John. jQuery 1.3 and the jQuery Foundation. jQuery Blog. 2009-01-14 [2009-05-04]. (原始内容存档于2020-12-01). 
  12. ^ Browser Support | jQuery
  13. ^ jquery.org, jQuery Foundation -. jQuery CDN. [2018-05-19]. (原始内容存档于2021-02-05). 
  14. ^ Google Libraries API - Developer's Guide. code.google.com. [March 11, 2012]. (原始内容存档于2018-12-25). 
  15. ^ Microsoft Ajax Content Delivery Network. ASP.net. Microsoft Corporation. [June 19, 2012]. (原始内容存档于2020-12-17). 
  16. ^ jQuery.noConflict() jQuery API Documentation. [2020-09-26]. (原始内容存档于2014-09-14). 
  17. ^ jquery.org, jQuery Foundation -. jQuery Core 3.0 Upgrade Guide - jQuery. [2018-05-19]. (原始内容存档于2021-01-21). 
  18. ^ Chesters, James. Long-awaited jQuery 3.0 Brings Slim Build. infoq.com. 2016-06-15 [2017-01-28]. (原始内容存档于2020-11-08). 
  19. ^ jQuery 3.2.0 Is Out!. jQuery Blog. 16 March 2017 [12 March 2018]. (原始内容存档于2020-11-24). 
  20. ^ jQuery 3.4.0 Released. jQuery Blog. 2018-04-10 [2019-04-15]. (原始内容存档于2021-01-15). 
  21. ^ 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). 
  22. ^ jQuery 3.5.0 Released!. jQuery Blog. 2020-04-10 [2020-04-11]. (原始内容存档于2020-12-21). 
  23. ^ jQuery 3.5.1 Released: Fixing a Regression. jQuery Blog. jQuery Foundation. [2020-10-21]. (原始内容存档于2020-11-25). 
  24. ^ jQuery 3.6.0 Released!. jQuery Blog. 2020-04-10 [2023-10-23]. (原始内容存档于2021-03-15) (美国英语). 
  25. ^ jQuery 3.6.4 Released: Selector Forgiveness. jQuery Blog. 2023-03-08 [2023-10-23]. (原始内容存档于2023-03-11) (美国英语). 
  26. ^ jquery v3.6.4. [2023-03-08]. (原始内容存档于2023-03-08) (英语). 
  27. ^ jQuery 3.7.0 Released: Staying in Order | Official jQuery Blog. 2023-05-11 [2023-10-23]. (原始内容存档于2023-06-08) (美国英语). 
  28. ^ jQuery 3.7.1 Released: Reliable Table Row Dimensions | Official jQuery Blog. 2023-08-28 [2023-10-23]. (原始内容存档于2023-08-31) (美国英语). 
  29. ^ jquery v3.7.0. bundlephobia.com. [2023-10-23]. (原始内容存档于2023-07-26) (英语). 
  30. ^ 存档副本. [2017-11-11]. (原始内容存档于2014-07-21). 
  31. ^ 存档副本. [2020-09-26]. (原始内容存档于2019-10-17). 

相关书籍

英文
中文

外部链接

{{bottomLinkPreText}} {{bottomLinkText}}
jQuery
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?