Chapter01 jQueryの基本

概要と目標 jQueryで出来ることを知り、
はじめてのjQueryを書いてみる。

jQueryの基本を学習し、jQueryの使い方や、セレクタを学習しましょう。

今回のゴール

RERUN

jQueryとは Webデザイナーに優しい
JavaScriptのライブラリ。

jQueryジェイクエリーは、2006年にMozillaのジョン・レッシグ氏にって開発されたJavaScriptのライブラリ。
CSSのような記述方法で、比較的簡単にWebページに効果や動きをつけられることが特徴。

公式サイトhttps://jquery.com/

RERUN


jQueryの使い方 jQuery本体を読み込めば使える。

jQueryは公式サイトよりjQuery本体のJSファイルをダウンロードして、読み込む方法と、
CDN(Content Delivery Network)といってインターネット経由でファイルを読み込む方法がある。
CDNの方が表示速度が早いなどのメリットがある。

  1. jQuery本体を準備
    ※. ファイルをダウンロードするか、CDNのコードをコピー)
    ※. 基本はファイル容量の軽い「minified」を利用
  2. jQuery本体をscript要素で読み込む
  3. ② の下に、新たなscript要素を作成
  4. ③ のscript要素内にjQueryのコードを記述
jQueryのバージョン
  • jQuery1.x系 : IE8以前のブラウザをサポート
  • jQuery2.x系 : IE9以降のブラウザをサポート
  • jQuery3.x系 : IE9以降のブラウザをサポート (再設計された)

本体の読み込み 本体を準備して、
script要素で読み込む。

この授業では、jQuery公式のCDN (https://code.jquery.com/) を使って、
jQuery1.x系の本体を利用する。

jQueryをCDNで読み込んでみよう

  1. 「jquery-lessons」 › 「chapter01」 › 「hello」フォルダ内の「index.html」を開く
  2. https://code.jquery.com/にアクセスして、jQuery 1.xの「minified」のコードをコピー
jQuery1.xのCDNのコード
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
  1. コピーしたコードを </body>の手前に貼り付ける
chapter01/hello/index.html
  <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
</body>
  1. 上書き保存

jQueryの記述場所 本体を読み込んだ後、
新たなscript要素で記述

jQueryのコードは、本体を読み込んだscript要素のあとに、
また別のscript要素を用いて記述する。
JavaScriptと同様script要素内に直接記述するか、
src属性を使って、外部のJSファイルに記述する。
なお、jQueryのコードはHTMLがブラウザに読み込まれる前に実行しても困るので、
準備が出来てからスクリプトを実行するようにする

script要素内に直接記述する方法
<script src="jQuery本体のファイルパス" type="text/javascript"></script>
<script type="text/javascript">
  ここにjQueryの処理を記述
</script>
</body>

HTML5 の場合は type属性を省略できる
外部ファイル(拡張子「.js」)に記述する方法
<script src="jQuery本体のファイルパス" type="text/javascript"></script>
<script src="JSファイルのパス" type="text/javascript"></script>
</body>

HTML5 の場合は type属性を省略できる

外部のJSファイルを読み込もう

  1. 「jquery-lessons」 › 「chapter01」 › 「hello」フォルダ内の「index.html」を開く
  2. app.js」を読み込むscript要素を記述
chapter01/hello/index.html
  <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
  <script src="app.js"></script>
</body>
  1. 上書き保存

DOMが読み込まれてから、
スクリプト実行しよう。

ブラウザにHTMLの読み込みが終わってから処理を実行する為に、
ready」というメソッドを使って、
DOMの準備ができてからスクリプトを実行させる。

readyメソッドでDOMの準備が出来てからスクリプトを実行
$(document).ready(function() {
  ここにjQueryの処理を記述
});

なお、readyメソッドは以下のように省略することも可能。

readyメソッドの省略した書き方
$(function() {
  ここにjQueryの処理を記述
});
  1. 「jquery-lessons」 › 「chapter01」 › 「hello」フォルダ内に「app.js」を作成
  2. app.js」にはじめてのjQueryを記述
chapter01/hello/app.js
$(function() {
  // ここにjQueryのコードを記述
});
  1. 上書き保存

jQueryの基本文法 jQueryはCSSっぽく書ける。

jQueryの基本は、セレクタで要素を選択し、メソッドで処理を実行する。
メソッドは複数繋げることが可能 (メソッドチェーン)

基本文法
$(セレクタ).メソッド名(パラメータ)
  〇〇に        〇〇する  

はじめてのjQueryを書いてみよう。

  1. 「jquery-lessons」 › 「chapter01」 › 「hello」フォルダ内にある「app.js」を開く
  2. app.js」にはじめてのjQueryを記述
chapter01/hello/app.js
$(function() {
  // ここにjQueryのコードを記述
  $('body').text('はじめてのjQuery');
});
  1. 上書き保存
  2. 「jquery-lessons」 › 「chapter01」 › 「hello」フォルダ内にある「index.html」をブラウザで開く
  3. 「はじめてのjQuery」と表示されているかを確認
ブラウザでの表示例

RERUN


メソッドチェーンを使ってみる

  1. 「jquery-lessons」 › 「chapter01」 › 「hello」フォルダ内にある「app.js」を開く
  2. 「app.js」に css() というメソッドを追記
chapter01/hello/app.js
$(function() {
  // ここにjQueryのコードを記述
  $('body').text('はじめてのjQuery').css('color', 'red');
});
  1. 上書き保存
  2. 「jquery-lessons」 › 「chapter01」 › 「hello」フォルダ内にある「index.html」をブラウザで開く
  3. 「はじめてのjQuery」が赤文字で表示されているかを確認
ブラウザでの表示例

RERUN


CSSと同じセレクタ CSSで使えるセレクタの多くは、
jQueryでも使える。

jQueryはCSSと同じセレクタがほとんど使える。

基本セレクタ
名称 書式 適用対象
ユニバーサルセレクタ $('*') すべての要素
Ex: $('*').text('ごにょごにょ');
タイプセレクタ $('要素名') 特定の要素
Ex: $('p').text('ごにょごにょ');
IDセレクタ $('#ID名') 特定のid属性の要素
Ex: $('#header').text('ごにょごにょ');
classセレクタ $('.class名') 特定のclass属性の要素
Ex: $('.heading').text('ごにょごにょ');
グループセレクタ $('要素A, 要素B') 複数の要素
Ex: $('h1, h2, h3').text('ごにょごにょ');
属性セレクタ
名称 書式 適用対象
[attribute] $('要素[属性名]') 【属性名】の属性が指定されている【要素】
Ex: $('p[title]').text('ごにょごにょ');
[attribute="value"] $('要素[属性名="属性値"]') 【属性名】の属性に【属性値】が指定されている【要素】
Ex: $('a[target="_blank"]').text('ごにょごにょ');
[attribute!="value"] $('要素[属性名!="属性値"]') 属性名】の属性に【属性値】以外が゙指定されている【要素】
Ex: $('span[lang!="ja"]').text('ごにょごにょ');
[attribute^="value"] $('要素[属性名^="属性値の始め"]') 【属性名】の属性が【属性値の始め】から始まる【要素】
Ex: $('a[href^="#"]').text('ごにょごにょ');
[attribute$="value"] $('要素[属性名$="属性値の終り"]') 【属性名】の属性が【属性値の終り】で終わる【要素】
Ex: $('a[href$=".com"]').text('ごにょごにょ');
[attribute*="value"] $('要素[属性名*="属性値の一部"]') 【属性名】の属性に【属性値の一部】を含む【要素】
Ex: $('a[href*="product"]').text('ごにょごにょ');
結合子
名称 書式 適用対象
子孫セレクタ $('要素A 要素B') 【要素A】の中にある【要素B】
Ex: $('#header p').text('ごにょごにょ');
子セレクタ $('要素A > 要素B') 【要素A】の直下にある【要素B】
Ex: $('ul > li').text('ごにょごにょ');
隣接セレクタ $('要素A + 要素B') 【要素A】と隣接している【要素B】
Ex: $('li + li').text('ごにょごにょ');
間接セレクタ $('要素A ~ 要素B') 【要素A】の後ろにある全ての【要素B】
Ex: $('h2 ~ p').text('ごにょごにょ');
擬似クラス
名称 書式 適用対象
first-child $('要素:first-child') 【要素】が最初の子要素の時
Ex: $('li:first-child').text('ごにょごにょ');
last-child $('要素:last-child') 【要素】が最後の子要素の時
Ex: $('li:last-child').text('ごにょごにょ');
first-of-type $('要素:first-of-type') 子要素の中で最初の【要素】
Ex: $('p:first-of-type').text('ごにょごにょ');
last-of-type $('要素:last-of-type') 子要素の中で最後の【要素】
Ex: $('p:last-of-type').text('ごにょごにょ');
nth-child $('要素:nth-child(式)') 【要素】が先頭から【式】(○個目)に一致する子要素の時
Ex: $('li:nth-child(2n + 1)').text('ごにょごにょ');
nth-last-child $('要素:nth-last-child(式)') 【要素】が最後から【式】(○個目)に一致する子要素の時
Ex: $('li:nth-last-child(2n)').text('ごにょごにょ');
nth-of-type $('要素:nth-of-type(式)') 先頭から【式】(○個目)に一致する【要素】
Ex: $('li:nth-of-type(2n)').text('ごにょごにょ');
nth-last-of-type $('要素:nth-last-of-type(式)') 最後から【式】(○個目)に一致する【要素】
Ex: $('li:nth-last-of-type(2n)').text('ごにょごにょ');
only-child $('要素:only-child') 【要素】が唯一の子要素の時
Ex: $('p:only-child').text('ごにょごにょ');
only-of-type $('要素:only-of-type') 子要素の中で唯一の【要素】
Ex: $('p:only-of-type').text('ごにょごにょ');
empty $('要素:empty') 空っぽ(子要素やテキストがない)の【要素】
Ex: $('div:empty').text('ごにょごにょ');
lang $('要素:lang(言語コード)') 【言語コード】の言語に設定されている【要素】
Ex: $('span:lang(en)').text('ごにょごにょ');
否定 $('要素A:not(要素B)') 【要素B】以外の【要素A】
Ex: $('a:not(.button)').text('ごにょごにょ');

CSSと同じセレクタを使ってみよう!

  1. 「jquery-lessons」 › 「chapter01」 › 「css-selector」フォルダ内の「app.js」をテキストエディタで開く
  2. 下記を参考にCSSと同じセレクタを使ったjQureyを記述
chapter01/css-selector/app.js
$(function () {
  // タイプセレクター
  $('body').css('background-color', '#eee');

  // idセレクター
  $('#site-title').css('font-weight', 'normal');

  // classセレクター
  $('.text').css('color', '#666');

  // 属性セレクター (「^=」 から始まる)
  $('a[href^="#"]').css('text-decoration', 'none');

  // 子孫セレクター
  $('ul .text').css('padding', '1em');

  // 隣接セレクター
  $('.text + .text').css('border-top', '1px dotted #ccc');

  // グループセレクター
  $('h1, p').css('text-align', 'center');
});
  1. 上書き保存
  2. 「jquery-lessons」 › 「chapter01」 › 「css-selector」フォルダ内にある「index.html」をブラウザで開く
  3. cssメソッドが反映されているか確認
ブラウザでの表示例

RERUN


jQuery独自のセレクタ jQuery独自のセレクタで、
要素を指定することもできる。

セレクタにはjQuery独自のものも用意されている。
基本的には要素を絞り込むフィルター的な役割になっている。

jQuery独自のフィルター
名称 書式 適用対象
firstセレクタ 要素:first 先頭の【要素】
Ex: $('li:first').text('ごにょごにょ');
lastセレクタ 要素:last 最後の【要素】
Ex: $('li:last').text('ごにょごにょ');
evenセレクタ 要素:even 偶数番目の【要素】(0から数える)
Ex: $('li:even').text('ごにょごにょ');
oddセレクタ 要素:odd 奇数番目の【要素】(0から数える)
Ex: $('li:odd').text('ごにょごにょ');
eqセレクタ 要素:eq(番号) 【番号】番目の【要素】(0から数える)
Ex: $('li:eq(1)').text('ごにょごにょ');
ltセレクタ 要素:lt(番号) 【番号】番目より前の【要素】(0から数える)
Ex: $('li:lt(3)').text('ごにょごにょ');
gtセレクタ 要素:gt(番号) 【番号】番目より後の【要素】(0から数える)
Ex: $('li:gt(3)').text('ごにょごにょ');
headerセレクタ :header h1 〜 h6のheading要素
Ex: $(':header').text('ごにょごにょ');
containsセレクタ 要素:contains(文字列) 【文字列】が含まれている【要素】
Ex: $('p:contains('こんにちは')').text('ごにょごにょ');
hasセレクタ 要素A:has(要素B) 【要素B】が含まれている【要素A】
Ex: $('p:has(span)').text('ごにょごにょ');
parentセレクタ 要素:parent 子要素やテキストが含まれている【要素】
Ex: $('span:parent').text('ごにょごにょ');

jQuery独自のセレクタを使ってみよう。

  1. 「jquery-lessons」 › 「chapter01」 › 「filter」フォルダ内の「app.js」をテキストエディタで開く
  2. 下記を参考にjQueryのフィルターを記述
chapter01/filter/app.js
$(function () {
  // :first ・・・ 先頭の要素のみ
  $('li:first').css('color', '#c00');

  // :last ・・・ 最後の要素のみ
  $('li:last').css('color', '#00c');

  // :eq() ・・・ 指定したインデックス番号の要素のみ(0から始まる)
  $('li:eq(2)').css('color', '#0c0');

  // :even ・・・ 偶数の要素
  $('li:even').css('background-color', '#eee');

  // :odd ・・・ 奇数の要素
  $('li:odd').css('background-color', '#ddd');
});
  1. 上書き保存
  2. 「jquery-lessons」 › 「chapter01」 › 「filter」フォルダ内にある「index.html」をブラウザで開く
  3. 適切な要素にcssメソッドが反映してるかを確認
ブラウザでの表示例

RERUN


練習問題 今回の理解度をチェック。

「chapter01」 › 「training」フォルダ内の「index.html」を開き、
下記の問題を解いて下さい。

ブラウザでの完成例

RERUN

    • ファイル名: app.js
    • テキストを「jQueryで置き換えだ!」に変更
    • CSSで文字の色を「#c00」に変更
    • CSSで背景の色を「#ddd」に変更
    • CSSで文字の装飾(下線)を「なし」に変更
    • テキストを「Page Top」に変更
    • CSSで文字の太さを「太字」に変更
解答例
chapter01/training/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>練習問題1</title>
</head>
<body>
  <h1>練習問題1</h1>
  <p id="msg">練習問題にチャレンジして下さい。</p>

  <table border="1">
    <caption>おすすめリンク集</caption>
    <thead>
      <tr>
        <th>サイト名</th>
        <th>URL</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Google</td>
        <td><a href="https://www.google.com/" target="_blank">https://www.google.com/</a></td>
      </tr>
      <tr>
        <td>Yahoo! Japan</td>
        <td><a href="https://www.yahoo.co.jp/" target="_blank">https://www.yahoo.co.jp/</a></td>
      </tr>
      <tr>
        <td>MSN</td>
        <td><a href="https://www.msn.com/" target="_blank">https://www.msn.com/</a></td>
      </tr>
      <tr>
        <td>Shibajukuブログ</td>
        <td><a href="https://shibajuku.net/" target="_blank">https://shibajuku.net/</a></td>
      </tr>
    </tbody>
  </table>

  <p><a href="#top">このページの先頭へ</a></p>

  <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
  <script src="app.js"></script>
</body>
</html>
chapter01/training/app.js
$(function () {
  // 問題5
  $('#msg').text('jQueryで置き換えだ!').css('color', '#c00');

  // 問題6
  $('tbody tr:even').css('background-color', '#ddd');

  // 問題7
  $('a[target="_blank"]').css('text-decoration', 'none');

  // 問題8
  $('a[href^="#"]').text('Page Top').css('font-weight', 'bold');
});

解答例は全問題のチェックボックスが on になるとご覧いただけます。

まとめ jQueryはCSSのように処理を記述できる
JavaScriptのライブラリ。

jQueryはJavaScriptをCSSのように記述することができる便利なライブラリです。

  • jQueryは、jQuery本体を読み込む必要がある
  • セレクタで要素を指定し、メソッドで処理を実行する
  • セレクタはCSSと同じものとjQuery独自のものがある