JQuery

简介

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 3.0及以后版本支持“当前−1版本” 的Firefox、Chrome、Safari、Edge（就是说当前稳定版本以及当前稳定版本之前的一个版本），另外还支持Internet Explorer 9以后的IE版本。在移动端支持iOS 7+和Android 4.0+。

加载jQuery

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还有.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事件
   });});

链接（Chaining）

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对象，链接将不起作用。

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

异步

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

子项目

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

jQuery UI

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

jQuery Tools

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

jQuery Mobile

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