jQuery をダウンロードして自サイト内に配置する場合は、以下の記述を行います。
HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>(Webサイトタイトル)</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<link rel="stylesheet" href="css/(必要に応じて関連ライブラリィ用CSSを指定)" type="text/css">
<!-- 記述例 [1]:head タグ内に記述 -->
<script src="js/jquery-3.6.0.min.js"></script>
<script src="js/(必要に応じて関連ライブラリィを指定)"></script>
<script>
(機能指示用 JavaScript を記述)
</script>
</head>
<body>
(表示する文書タグを記述)
<!-- 記述例 [2]:bodyタグ内に記述 -->
<script src="js/jquery-3.6.0.min.js"></script>
<script src="js/(必要に応じて関連ライブラリィを指定)"></script>
<script>
(機能指示用 JavaScript を記述)
</script>
</body>
</html>
CDN を使用する場合は、以下の記述を行います。本例では、Google の CDN を使用しています。
HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>(Webサイトタイトル)</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<link rel="stylesheet" href="css/(必要に応じて関連ライブラリィ用CSSを指定)" type="text/css">
<!-- 記述例 [1]:head タグ内に記述 -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="js/(必要に応じて関連ライブラリィを指定)"></script>
<script>
(機能指示用 JavaScript を記述)
</script>
</head>
<body>
(表示する文書タグを記述)
<!-- 記述例 [2]:bodyタグ内に記述 -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="js/(必要に応じて関連ライブラリィを指定)"></script>
<script>
(機能指示用 JavaScript を記述)
</script>
</body>
</html>
jQuery を呼び出し時は、JavaScript 内で以下の記述を行います。
// jQuery の記述型式
$(...)
jQuery(...) // 上記と同じ意味
// ... の部分は記述するものによって意味が異なります。
$(セレクタ, コンテキスト)
$(エレメント)
$(配列エレメント)
$(オブジェクト)
$(jQuery オブジェクト)
$()
// jQuery 記述の例
// セレクタ(対象要素)にイベント(何か)があったら アクション(処理)する
$(セレクタ).on("イベント", (function() { アクション });
$(セレクタ).イベント(function() { アクション });
// #id1 がクリックされたら #id2 の "CSS に color: red" を指定
$("#id1").on("click", function(){ $("#id2").css("color", "red"); });
$("#id1").click(function(){ $("#id2").css("color", "red"); });
主要なセレクタの記述方法は、以下の通りです。
記述型式 | 使用例 | 意味 |
---|---|---|
全ての要素 | $("*") | 全ての要素 |
型指定 | $("div") | div 要素 |
id 指定 | $("#id1") | #id1 の要素 |
class 指定 | $(".class1") | .class1 の要素 |
子孫結合指定 | $("#id1 div") | #id1 名配下の div 要素 |
直下の子指定 | $("#id1 > div") | #id1 名直下の div 要素 |
最初の子指定 | $("p:first-child") | 最初の p 要素 |
最後の子指定 | $("p:last-child") | 最後の p 要素 |
n 番目の子指定 | $("p:nth-child(2)") | 2 番目の p 要素 |
属性指定1 | $("a[href]") | href 属性が指定されている a 要素 |
属性指定2 | $("[name='name1']") | name 属性が name1 の要素 |
属性指定3 | $("[href='#fref1']") | href 属性が #ref1 の要素 |
属性指定4 | $("[href!='#fref1']") | href 属性が #ref1 以外の要素 |
n 番目指定 | $("p:eq(2)") | 3 番目の p 要素(最初は 0) |
奇数番目指定 | $("tr:odd") | 奇数番目の tr 要素 |
偶数番目指定 | $("tr:even") | 偶数番目の tr 要素 |
複数指定 | $(".class1,.class2,.class3") | .class1 と .class2 と .class3 の要素 |
要素の複数選択や絞り込みを行うトラバースの記述方法は、以下の通りです。
記述型式 | 使用例 | 意味 |
---|---|---|
親要素指定 | $("#id1").parent() | #id1 の親要素 |
先祖要素指定 | $("#id1").parents() | #id1 の先祖要素 |
もっとも近い先祖要素指定 | $("li.class1").closest("ul") | .class1 が指定されている li のもっとも近い ul 要素 |
子要素指定 | $(".class1").children("p") | .class1 の子要素の p 要素 |
小孫要素指定 | $(".class1").find("p") | .class1 の子孫要素の p 要素 |
前の兄弟要素指定 | $(".class1").prev() | .class1 の前の兄弟要素 |
後ろの兄弟要素指定 | $(".class1").next() | .class1 の後ろの兄弟要素 |
前の全ての兄弟要素指定 | $(".class1").prevAll() | .class1 の前の全ての兄弟要素 |
後ろの全ての兄弟要素指定 | $(".class1").nextAll() | .class1 の後ろの全ての兄弟要素 |
合致する要素指定 | $(".class1").filter(".class2") | .class1 の中から .class2 に合致する要素 |
合致しない要素指定 | $(".class1").not(".class2") | .class1 の中から .class2 に合致しない要素 |
最初の要素指定 | $(".class1").first() | .class1 の最初の要素 |
最後の要素指定 | $(".class1").last() | .class1 の最後の要素 |
最初から n 番目の要素指定 | $(".class1").eq(2) | .class1 の中で最初から 3 番目の要素(最初は 0) |
最後から n 番目の要素指定 | $(".class1").eq(-2) | .class1 の中で最後から 2 番目の要素(最後は -1) |
指定範囲の要素指定 | $(".class1").slice(0, 3) | .class1 の中の 0, 1, 2 番目の要素(最初は 0 /最後は -1/第 2 引数は未満値を指定) |
加えた要素指定 | $(".class1").add(".class2") | .class1 に .class2 を加えた要素 |
操作する前の要素指定 | $(".class1").next().css("color", "red").end().css("color", "blue") | .class1 の次の要素の文字色を赤、操作前の要素の文字色を青に設定(操作は .next() や .find() が対象) |
合致する要素の検査 | $(".class1").is(".class2") | .class1 の中に .class2 に合致する要素があるかを検査し true / false を返却 |
イベント発生時の処理の記述方法は、以下の通りです。
要素.on(イベント名, セレクタ, データ, 関数)
記述例
// ボタンがクリックされた場合の処理
$("button").on("click", function() {
// ボタンがクリックされた時の処理
})
// ボタンにマウスが侵入したかクリックされた場合の処理
$("button").on("click mouseenter", function() {
// ボタンにマウスが侵入したかクリックされた時の処理
})
// 処理関数にデータ渡す場合の処理(data プロパティで参照)
$("#one").on("click", {name: "太郎"}, showText);
$("#two").on("click", {name: "花子"}, showText);
function showText(e) {
console.log(e.data.name + "です。");
}
// 子要素に発生するイベントの処理(下記の HTML を想定)
// <ul>
// <li>リスト1<li>
// <li>リスト2<li>
// <li>リスト3<li>
// </ul>
// ul に対する 1 つのイベントで済みます。
// li 要素の個数が動的に変化しても対応可能です。
$("ul").on("click", "li", function() {
// li 要素がクリックされた時の処理
})
// オンマウス/オフマウスの処理
$("button").on({
"mouseenter": function() {
// マウスが入って来た時の処理
},
"mouseleave": function() {
// マウスが離れていった時の処理
}
})
// click イベント処理の削除
$("button").off("click");
HTML の属性や値の参照や設定を行う場合の記述方法は、以下の通りです。
記述例
// 属性の値を参照
value1 = $("img.img1").attr("src");
// 属性に値を設定
$("img.img1").attr("src", "images/photo1.jpg");
// 複数の属性に値を設定
$("img.img1").attr({
src: "images/photo1.jpg",
width: "100",
height: "100"
});
// 属性の削除
$("img.img1").removeAttr("width height");
// attr と prop の違い(href 属性)(以下の HTML を想定)
// <a id="id1" href="#jump1">Jump Label</a>
value1 = $("#id1").attr("href"); // "#jump1" を返却
value1 = $("#id1").prop("href"); // "http://sample.com/index.html#jump1" を返却
// attr と prop の違い(checked 属性)(以下の HTML を想定)
// <input id="id1" type="checkbox" checked>
value1 = $("#id1").attr("checked"); // "checked" を返却
value1 = $("#id1").prop("checked"); // true を返却
// HTML 文字列を参照(以下の HTML を想定)
// <p id="id1"><b>Text1</b></p>
value1 = $("#id1").html(); // "<b>Text1</b>" を返却
// HTML 文字列を設定(以下の HTML を想定)
// <p id="id1"><b>Text1</b></p>
$("#id1").html("<i>Text2</i>"); // "<p id="id1"><i>Text2</i></p>" に変更
// 文字列を参照(以下の HTML を想定)
// <p id="id1"><b>Text1</b></p>
value1 = $("#id1").text(); // "Text1" を返却
// 文字列を設定(以下の HTML を想定)
// <p id="id1"><b>Text1</b></p>
$("#id1").text("<i>Text2</i>"); // "<p id="id1"><i>Text2</i></p>" に変更
// フォーム要素の値の参照
value1 = $("input#id1").val();
// フォーム要素の値の設定
$("input#id1").val("value1");
// フォーム要素(checkbox、radio ボタン)の参照
value1 = $("input[name='color1']:checked").val();
// フォーム要素(checkbox、radio ボタン)の設定(配列を使用)
$("input[name='color1']").val(["Check1"]);
// クラス名の追加
$("#id1").addClass("class1");
// クラス名の削除
$("#id1").removeClass("class1");
// クラス名があるかの検査
value1 $("#id1").hasClass("class1"); // class1 がある場合は true ない場合は false を返却
// クラス名の設定の反転
$("#id1").toggleClass("class1"); // class1 がある場合は削除し、ない場合は追加
スタイルシートの参照や設定を行う場合の記述方法は、以下の通りです。
記述例
// CSS のプロパティの値の参照
value1 = $("#id1").css("color"); // #id1 の color プロパティの値を value1 に格納
// CSS のプロパティの値の設定
$("#id1").css("color", "red"); // #id1 の color プロパティに red を設定
// 要素の横幅(パディングを含まない)を参照
value1 = $("#id1").width(); // #id1 の横幅を value1 に格納
// 要素の横幅(パディングを含まない)を設定
$("#id1").width(200);
// 要素の横幅(パディングを含む)を参照
value1 = $("#id1").innerWidth();
// 要素の横幅(ボーダーを含む)を参照
value1 = $("#id1").outerWidth();
// 要素の横幅(マージンを含む)を参照
value1 = $("#id1").outerWidth(true);
// 要素の高さ(パディングを含まない)を参照
value1 = $("#id1").height();
// 要素の画面上の位置を参照
value1 = $("#id1").offset(); // #id1 の画面上の位置(value1.top:縦位置、value1.left:横位置)を参照
// 要素の画面上の位置を設定
$("#id1").offset({ // #id1 の画面上の位置(縦位置:200、横位置:100)を設定
top: 200,
left: 100
});
// 要素の親要素からの相対位置を参照
value1 = $("#id1").position(); // #id1 の親要素からの相対位置(value1.top:縦位置、value1.left:横位置)を参照
// 要素の縦方向のスクロール位置を参照
value1 = $("#id1").scrollTop(); // #id1 の縦方向のスクロール位置を参照
// 要素の横方向のスクロール位置を参照
value1 = $("#id1").scrollLeft(); // #id1 の横方向のスクロール位置を参照
要素に効果を与える場合の記述方法は、以下の通りです。
引数の意味は、以下の通りです。
記述例
// 要素を表示
$("#id1").show();
// 要素を非表示
$("#id1").hide();
// 要素の表示/非表示を切り替え
$("#id1").toggle();
// 要素をフェードイン
$("#id1").fadeIn();
// 要素をフェードアウト
$("#id1").fadeOut();
// 要素の透明度を変化
$("#id1").fadeTo("normal", 0.2);
// 要素のフェードイン/フェードアウトを切り替え
$("#id1").fadeToggle();
// 要素をスライドアップ
$("#id1").slideUp();
// 要素をスライドダウン
$("#id1").slideDown();
// 要素のスライドアップ/スライドダウンを切り替え
$("#id1").slideToggle();
// 要素のアニメーション効果を実施
$("#id1").animate({
opacity: 0,
width: "200px",
height: "100px"
});
// 要素のアニメーション効果を実施(相対サイズ指定)
$("#id1").animate({
opacity: 0,
width: "+=100",
height: "-=50"
});
// 要素のアニメーション効果を実施(基本属性を配列エレメントで指定)
$("#id1").animate({
opacity: 0,
width: "200px",
height: "100px"
}, {
duration: 1000,
easing: 'linear',
complete: function() { alert("Complete!");
});
DOM(Document Object Model)操作の記述方法は、以下の通りです。
引数の意味は、以下の通りです。
記述例
// 要素の先頭にコンテンツを追加
// <p>...</p> → <p><b>コンテンツ</b>...</p>
$("p").prepend("<b>コンテンツ</b>");
$("<b>コンテンツ</b>").prependTo("p");
// 要素の末尾にコンテンツを追加
// <p>...</p> → <p>...<b>コンテンツ</b></p>
$("p").append("<b>コンテンツ</b>");
$("<b>コンテンツ</b>").appendTo("p");
// 要素の直前にコンテンツを追加
// <p>...</p> → <b>コンテンツ</b><p>...</p>
$("p").before("<b>コンテンツ</b>");
$("<b>コンテンツ</b>").insertBefore("p");
// 要素の直後にコンテンツを追加
// <p>...</p> → <p>...</p><b>コンテンツ</b>
$("p").after("<b>コンテンツ</b>");
$("<b>コンテンツ</b>").insertAfter("p");
// 要素をラッピングエレメントで囲む
// <p>...</p><p>...</p> →
// <div class='class1'><p>...</p></div><div class='class1'><p>...</p></div>
$("p").wrap("<div class='class1' />");
// 要素集合をラッピングエレメントで囲む
// <p>...</p><p>...</p> →
// <div class='class1'><p>...</p><p>...</p></div>
$("p").wrapAll("<div class='class1' />");
// 要素のコンテンツをラッピングエレメントで囲む
// <p>...</p> → <p><b class='class1'>...</b></p>
$("p").wrapInner("<b class='class1' />");
// ターゲットを要素で置き換え
// <div class='class1'>...</div> → <div class='class2'>コンテンツ</div>
$("<div class='class2'>コンテンツ</div>").replaceAll("div.class1");
$("div.class1").replaceWith("<div class='class2'>コンテンツ</div>");
// 要素の中からセレクタに合致する要素を削除
// セレクタを省略すると、すべての要素を削除します。
// remove は、削除に対して、detach は、jQuery 要素として残ります
// <div><p>...</p></div> → (削除)
$("div").remove();
$("div").detach();
// 要素の子孫要素をすべて削除
// <div><p><b>...</b></p></div> → <div></div>
$("div").empty();
// 要素の親要素を削除
// セレクタを省略すると、すべての要素を削除します
// <div><p>...</p></div> → <p>...</p>
$("p").unwrap("div");
その他の機能の記述方法は、以下の通りです。
記述例
// 要素群に対して関数の実行
$("div").each(function() {
// 要素単位の処理
alert($(this).html());
});
// jQuery 要素群を JavaScript 要素群に変換
obj = $("div").get(); // すべての要素を変換
obj = $("div").toArray(); // すべての要素を変換
obj = $("div").get(index); // 指定した位置(0から)の要素を変換
// 要素のインデックス値を返却
value1 = $("#id1").index(); // インデックス値は 0 からの値
// 要素にデータ(key=data)を設定
$("#id1").data("key1", "data1");
// 要素にデータ(key=data)を設定(複数)
$("#id1").data({ "key1": "data1", "key2": "data2" });
// 要素のデータ(key=data)から値の取得
value1 = $("#id1").data("key1"); // "data1"
// 要素のデータ(key=data)からすべての値の取得
value1 = $("#id1").data(); // { "key1": "data1", "key2": "data2" }
// 要素からデータを削除
$("#id1").removeData("key1");
// 要素からデータを削除(複数)
$("#id1").removeData("key1", "key2");
// 要素からデータを削除(全て)
$("#id1").removeData();
ユーティリティの機能の記述方法は、以下の通りです。
記述例
// document エレメントにデータ(key: data)を設定
$.data(docement, "key", "data");
// document エレメントにデータ(key)を参照
value1 = $.data(docement, "key");
// 文字列の前後のホワイトスペースを除去
value1 = $.trim(" abc ");
// JSON のオブジェクトに変換・参照
// 変数名と値はダブルクォーテーション(")で囲む必要あり
value1 = '{ "name":"tarou", "age":"20" }';
obj1 = $.parseJSON(value1);
value2 = obj1.name;
value3 = obj1.age;
// XML のオブジェクトに変換・参照
value1 = '<xml><name>tarou</name><age>20</age></xml>';
obj1 = $.parseXML(value1);
value2 = $(obj1).find("name").text();
value3 = $(obj1).find("age").text();
// HTML の配列に変換・参照
value1 = '<div class="name">tarou</div><div class="age">20</div>';
html1 = $.parseHTML(value1);
value2 = html[0];
value3 = html[1];
// 配列をひとつずつ処理
var array = [ "Red", "Green", "Blue" ];
$.each(array, function(index, val) {
// 配列の項目単位の処理
// index に配列のインデックス値、val に配列の値
console.log(index + ":" + val); // 0:Red, 1:Green, 2:Blue
});
// オブジェクトの属性をひとつずつ処理
var params = { height: "100px", width: "100px" };
$.each(params, function(key, val) {
// オブジェクトの属性単位の処理
// key に属性の key、val に属性の値
console.log(key + "=" + val); // height=100px, width:100px
});
// 配列から条件に合致するものを抜き出し
value1 = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ];
value2 = $.grep(value1, function(value, index) {
// 配列の項目単位の処理
// value に配列の値、index に配列のインデックス値
// 抜き出す場合は、true を返却、それ以外の場合は、false を返却
// 引数に false を指定すると返却値の true と false の扱いが反転
// 例:$.grep(value1, function(value, index) { ... }, false);
return (value.match(/u/));
});
// DOM 要素の配列から重複した要素を排除しソート
// 以下の HTML を想定
// <div id="a" class="blue"></div>
// <div id="b" class="blue red"></div>
// <div id="c" class="blue red"></div>
// <div id="d" class="red"></div>
value1 = $(".blue").get(); // a, b, c
value2 = $(".red").get(); // b, c, d
value3 = value1.concat(value2); // a, b, c, b, c, d
value4 = $.unique(value3); // a, b, c, d
jQuery を使用してボックスに効果を適用するサンプルです。
HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQuery サンプル</title>
<style>
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
.container {
width: 100%;
margin: 0 auto;
padding: 20px 0;
border: 1px #ccc solid;
}
.container h1 {
padding: 0 0 20px 0;
font-size: 28px;
text-align: center;
}
.container ol li {
margin: 0 0 10px 30px;
}
.container ol li button {
display: inline-block;
padding: 5px 10px;
margin: 0 10px;
}
.container ol li div {
padding: 10px 0;
}
.container ol li div p {
width: 256px;
height: 128px;
background: url('images/jquery-256x128.jpg');
background-size: cover;
color: white;
font-weight: bold;
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h1>jQuery サンプル</h1>
<ol>
<li>文字の色や大きさが変わります。<button id="jq-01-on">実行</button><button id="jq-01-off">元に戻す</button>
<div><p id="jq-01">jQuery サンプル</p></div>
</li>
<li>文字だけ消します。<button id="jq-02-on">実行</button><button id="jq-02-off">元に戻す</button>
<div><p id="jq-02">jQuery サンプル</p></div>
</li>
<li>フェードアウトします。<button id="jq-03-on">実行</button><button id="jq-03-off">元に戻す</button>
<div><p id="jq-03">jQuery サンプル</p></div>
</li>
<li>上にスライドします。<button id="jq-04-on">実行</button><button id="jq-04-off">元に戻す</button>
<div><p id="jq-04">jQuery サンプル</p></div>
</li>
<li>透明にします。<button id="jq-05-on">実行</button><button id="jq-05-off">元に戻す</button>
<div><p id="jq-05">jQuery サンプル</p></div>
</li>
<li>縮みます。<button id="jq-06-on">実行</button><button id="jq-06-off">元に戻す</button>
<div><p id="jq-06">jQuery サンプル</p></div>
</li>
<li>消します。<button id="jq-07-on">実行</button><button id="jq-07-off">元に戻す</button>
<div><p id="jq-07">jQuery サンプル</p></div>
</li>
</ol>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$('#jq-01-on').click(function(){
$('#jq-01').css('transition', '2s');
$('#jq-01').css('font-size', '1.5rem');
$('#jq-01').css('color', 'red');
})
$('#jq-01-off').click(function(){
$('#jq-01').css('transition', '2s');
$('#jq-01').css('font-size', '1.0rem');
$('#jq-01').css('color', 'white');
})
$('#jq-02-on').click(function(){
$('#jq-02').css('transition', '2s');
$('#jq-02').css('color', '#ffffff00');
})
$('#jq-02-off').click(function(){
$('#jq-02').css('transition', '2s');
$('#jq-02').css('color', '#ffffffff');
})
$('#jq-03-on').click(function(){
$('#jq-03').fadeOut(2000);
})
$('#jq-03-off').click(function(){
$('#jq-03').fadeIn(2000);
})
$('#jq-04-on').click(function(){
$('#jq-04').slideUp(2000);
})
$('#jq-04-off').click(function(){
$('#jq-04').slideDown(2000);
})
$('#jq-05-on').click(function(){
$('#jq-05').fadeTo(2000, '0');
})
$('#jq-05-off').click(function(){
$('#jq-05').fadeTo(2000, '1');
})
$('#jq-06-on').click(function(){
$('#jq-06').css('transition', '2s');
$('#jq-06').css('height', '0px');
})
$('#jq-06-off').click(function(){
$('#jq-06').css('transition', '2s');
$('#jq-06').css('height', '128px');
})
$('#jq-07-on').click(function(){
$('#jq-07').hide();
})
$('#jq-07-off').click(function(){
$('#jq-07').show();
})
</script>
</body>
</html>
※リロード(再描画)して確認してください。