JQuery

jQuery（ジェイクエリー）は、ウェブブラウザ用のJavaScriptコードをより容易に記述できるようにするために設計されたJavaScriptライブラリである。ジョン・レシグが、2006年1月に開催された BarCamp NYC でリリースした。様々な場面で活用されており、JavaScriptライブラリのデファクトスタンダードと呼ぶ者もいる。ロゴの下に表記されているキャッチコピーは「write less, do more」（「少ない記述で、もっと多くのことをする」の意）。

 機能・特徴 
jQueryには次のような機能・特徴がある。
 ブラウザに依存しないオープンソースのセレクタエンジン Sizzle を使ったDOMエレメントの選択（Sizzle は jQuery プロジェクトからスピンアウト）
 DOM操作と変更（CSS 1-3 と基本的なXPathのサポートを含む）
 イベント
 CSS操作
 エフェクトとアニメーション
 Ajax
 ユーティリティ - ブラウザのバージョン取得、each関数など
 プラグインによる拡張性

 配布 
通常jQueryは単一のJavaScriptファイルとして存在している。このほかパッケージ管理システム（npm、Yarn、）やコンテンツデリバリネットワーク（CDN）（Google、マイクロソフトなど）で配信されている。

ライブラリにリンクする例（同一ホスト・サーバーから）：
<script src="jquery-3.7.1.min.js"></script>

公式のパブリックCDN、を利用する例：

<script
 src="https://code.jquery.com/jquery-3.7.1.min.js"
 integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo="
 crossorigin="anonymous"></script>

 インタフェース 

 関数 
jQueryは、静的メソッドとjQueryオブジェクトメソッドの2種類あり、それぞれに独自の使用スタイルがある。

 jQuery - メインのjQueryオブジェクト
 $ - jQueryの別名（エイリアス）

なおjQueryによって再代入された$変数は、jQuery.noConflict()を記載した行以降、放棄される。これにより他のライブラリなどで宣言されていた$変数を復帰することができる。

 典型的なスタート方法 
jQueryをスタートするには次の方法が推奨されている。

function example() {
	// 定義された関数による任意のコード
}
$(example);

// または

$(function () {
	// 無名関数による任意のコード
});

HTMLの解析を終えると、$()メソッドで指定された関数をコールバックし、DOM操作などを安全にスタートさせる。同じ働きをしていたレディイベント$(document).on('ready', callback)は古典的な方法で、jQuery 3.0以降削除されて、動作しない。

 メソッドチェーン 
$()メソッドは基本的にjQueryオブジェクトが返る為、次のようにメソッドをつなげていくことが可能である。

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

このコードは、divタグのクラス属性がtestのものとpタグのクラス属性がquoteのもの全てについて、クラス属性blueを追加し、それらをアニメーション付きでスライドダウンさせる。$()変数およびadd()関数は一致する集合を決め、addClass()とslideDown()は参照しているノード群に作用する。

 Ajax 
静的メソッドの$.ajax()を用いて非同期通信を実行することができる。$.ajax()の返り値にはPromiseインタフェースを実装したDeferredオブジェクトが返るため、then()メソッドを用いて要求した結果を受けとる必要がある。

$.ajax({
 type: 'POST',
 url: '/process/submit.php',
 data: {
 name : 'John',
 location : 'Boston',
 },
}).then(function(msg) {
 alert('Data Saved: ' + msg);
}).catch(function(xmlHttpRequest, statusText, errorThrown) {
 alert(
 'Your form submission failed.\n\n'
 + 'XML Http Request: ' + JSON.stringify(xmlHttpRequest)
 + ',\nStatus Text: ' + statusText
 + ',\nError Thrown: ' + errorThrown);
});

このコードは/process/submit.phpにパラメータ name=John&location=Boston をつけて要求し、その要求が正常に完了したとき、レスポンスを表示する。

jQuery 3.0以前では結果を受けとる際にsuccess、error、completeの各メソッドに指定されたコールバック関数へ渡していたが、以降削除、動作しない。

Fetch APIと似た文法であるが、jQueryではXMLHttpRequestオブジェクトを利用している為、返されるオブジェクトや、HTTPステータスコードが404でもエラーとは見なさないなど取り扱いが少し異なる。

 採用 
マイクロソフトとノキアはそれぞれ自社プラットフォームへのjQueryバンドルを計画していると発表した。マイクロソフトは手始めに Visual Studio で採用、ASP.NET開発チームをフルタイムでjQueryの開発に参加のうえ、jQueryを同社のASP.NETにおけるクライアント・サイド・スクリプティングの標準として採用し、同社が開発していた類似技術を全て廃止すると発表、ASP.NET AJAX および ASP.NET MVC Framework で利用する。一方ノキアは同社の Web Runtime プラットフォームに組み込む予定である。

 リリース履歴 
主なリリースを示す。下に行くほど古いバージョンを示している。
 リリース日付 バージョン番号 備考 2021年3月12日 3.6.0 2020年4月10日 3.5.0 2019年4月10日 3.4.0 2018年1月19日 3.3.0 古い関数の廃止、クラスを受け付ける関数において配列形式にも対応 2017年3月16日 3.2.0 <template>要素の内容を取り戻す対応を追加、様々な古いメソッドを廃止 2016年7月7日 3.1.0 Deferredモジュールのエラーハンドリング改善。 2016年6月9日 3.0.0 DeferredのPromises/A+互換化。カスタムセレクタの高速化。Ajax機能を含まない軽量版の提供。ES2015のfor ofループへの対応。requestAnimationFrameへの対応など。 2016年1月14日 3.0.0-beta1 AlphaからBetaに移行。Alpha時点で存在していた、IE8対応のjQuery compatは、Microsoft社によるIEのサポートポリシー変更に伴って開発停止。 2016年5月20日 2.2.4、1.12.4 1系、2系の最終バージョン。 2016年1月8日 2.2.0、1.12.0 1系、2系の機能追加はこのバージョンで終了し、今後はバグの修正のみとなる。パフォーマンスの改善、SVGクラスの操作等の新機能追加。 2014年1月24日 2.1.0、1.11.0 2013年4月18日 2.0.0 Internet Explorer 6, 7, 8 の非サポート,ファイルサイズを12%少なくしたこと等。APIは1.9との互換性を維持している。 2013年1月15日 1.9 FINAL / 2.0 beta .toggle等の利用頻度の低いAPIの廃止（廃止されたAPIはjQuery Migrate Pluginとして別途提供） 2012年8月9日 1.8 CSSのベンダープレフィックスを自動付加、5つのモジュールに分割、アニメーション処理刷新、Sizzle（セレクター解析エンジン）再構築、XSS対策強化、ソフトウェアライセンスの単一化 2011年11月3日 1.7 .bind(), .delegate(), .live()等の一部APIの統合、新規APIの追加、一部API連携の改善、IEでの不具合／仕様の対応 2011年5月3日 1.6 パフォーマンス改善、.attr(), .val()の拡張、アニメーション処理の改善 2011年1月31日 1.5 Ajax関連モジュールのコード刷新、settingに新規プロパティを追加、Deferredオブジェクト追加、一部APIのパフォーマンス改善 2010年1月14日 1.4 大幅なパフォーマンス／実行速度改善 2009年1月14日 1.3 Sizzle Selector Engine がコアに導入された。 2007年9月10日 1.2 2007年1月14日 1.1 2006年8月26日 1.0 最初の安定版 2006年6月30日 1.0a α版