【JavaScript】jQuery

使い方

CDNを使用する方法

特徴:オンラインでのみ使用可能

// jQuery バージョン 3.71の場合
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
ダウンロードして使用する方法

特徴:オフラインでも使用可能
1.公式サイトからファイルをダウンロードする
Download jQuery | jQuery
※「名前を付けてリンク先を保存」でダウンロード

2.ファイルを配置する

3.ダウンロードしたファイルを外部取込する

<script src="/demo/resources/common/js/jquery-3.7.1.min.js"></script>

記入場所

パターン1:要素の下に記載する
<input type="text" id="name" value="あいうえお"/>

<script>
  alert($("#name").val())  // 「あいうえお」が表示される
</script>
パターン2:要素の上に記載する

$(function()をつけるとDOM Documentのロードが終わった際に実行されるようになる

<script>
  $(function() {
      alert($("#name").val())  // 「あいうえお」が表示される
  });
</script>

<input type="text" id="name" value="あいうえお"/>

要素の指定

すべて $("*")

すべての要素にマッチする

<script>
  $("*").css("font-family", "Arial");
</script>
ID $("#id")

指定したIDにマッチ

<script>
  // IDを指定
  $("#userId").css("color", "red");         // <p id="userId">~</p>
  // ID+エレメントを指定
  $("p#userId").css("color", "red");        // <p id="userId">~</p>
  // ID+クラスを指定
  $(".smpl#userId").css("color", "red");    // <p class="smpl" id="userId">~</p>
</script>
クラス $(".class")

指定したIDにマッチ

<script>
  // クラスを指定
  $(".smpl").css("color", "red");        // <h1 class="smpl">~</h1>
  // クラス+エレメントを指定
  $("p.smpl").css("color", "red");       // <p class="smpl">~</p>
  // クラスの組み合わせを指定
  $(".smpl.smpl2").css("color", "red");  // <p class="smpl smpl2">~</p>
</script>
エレメント $("element")

指定したエレメント要素(div等)にマッチ

<script>
  $("h1").css("color", "red");    // <h1>~</h1>
</script>
複数指定

カンマで区切ると、and条件でマッチ

<script>
  $("label,.smpl").css("color", "red");    // <label class="smpl">~</label>
</script>
○○○=~~~の形式のものを指定

id=○○やclass=○○など「=」を含むものが指定可能

<script>
  // id=~を持つすべての要素を指定(id以外になんでも指定可能)
  $("[id]").css("color", "red");
  // IDを指定
  $("[id='userId']").css("color", "red");    // <p id="userId">~</p>
  // クラスを指定
  $("[class='smpl']").css("color", "red");    // <p class="smpl">~</p>
  // 等しくないものを指定
  $("[id!='userId']").css("color", "red");    // <p id="userName">~</p>
  // 「-」前を指定
  $("[id|='user']").css("color", "red");    // <p id="user-id">~</p>
  // 含むものを指定
  $("[id*='user']").css("color", "red");    // <p id="userId">~</p>
  // 複数条件を指定
  $("[id*='user'][class='smpl']").css("color", "red");    // <p id="userId" class="smpl">~</p>
</script>
親子関係
<script>
  // 親要素を指定
  $("#userId").parent().css("color", "red");
  // 先祖要素をすべて指定
  $("#userId").parents().css("color", "red");
  // 子要素をすべて指定(1階層下)
  $("#userId").children().css("color", "red");
  // 子要素のエレメントを指定(1階層下)
  $("#userId").children("p").css("color", "red");
  // 子要素のエレメントを指定(全階層)
  $("#userId").find("p").css("color", "red");
</script>
順番
<script>
  // 最初の要素
  $("p").first().css("color", "red");
  // 最後の要素
  $("p").last().css("color", "red");
  //n番目の要素(最初は0)
  $("p").eq(0).css("color", "red");

</script>
is

obj の中から selector にマッチする要素が一つでもあれば true を、さもなくば false を返す
if文と合わせて使う

<script>
  // labelにid=userIdがあればアラートを出す
  if ($("label").is("#userId")) {
      alert("Find!");
  }

</script>
表示、非表示
<div id="hiddenItem" hidden>非表示</div>
<div id="visibleItem">表示</div>

<script>
  // hidden(非表示)の場合、アラートを出す
  if ($("#hiddenItem").is(":hidden")) {
      alert("Find!");
  }

  // visible(表示)の場合、アラートを出す
  if ($("#visibleItem").is(":visible")) {
      alert("Find!");
  }
</script>

イベント

(on)
イベント 内容
change フォーム部品の状態に何らかの変化があった時に発動
click 要素がクリックされた時に発動
blur / focus 要素にフォーカスが当たったとき(focus)、外れたとき(blur)に発動
load ドキュメントが読み込まれたあとに発動。読み込み前はreadyを使う
resize ウィンドウサイズが変化した時に発動
scroll 画面がスクロールした時に発動
keyup / keypress キーボードのキーが押された時(keypress)、離された時(keyup)に発動
mouseup / mousedown マウスのボタンが押された時(mousedown)、離された時(mouseup)に発動
mousemove 指定の要素内でマウスが動いている時に発動
submit フォームが送信された時に発動
error 何らかのJavaScriptエラーが発生した時に発動
<script>
  // クリック
  $("#nextButton").on("click", function() {
      alert("クリックされました!");
  });

  // 画面ロード後 ※$(function()で囲むと動かない
  $(window).on("load",function(){
      alert("Hello");
  });

  // クリックまたはマウスオーバー
  $("input").on("click change", function() {
      alert("クリックまたは変更");
  });

  // div内のinputを対象
  $("div").on("click","input", function() {
      alert("クリックまたは変更");
  });

  // 複数のイベント
  $("input").on({
      click: function() {
          alert("クリック");
      },
      mouseover: function() {
          alert("マウスオーバー");
      }
  });
</script>
その他
メソッド 内容
.val() 指定した要素の値を取得または設定
.text() 指定した要素のテキストを取得または設定
.prop() 指定した要素の属性を取得または設定(削除はremoveProp)
.css() 指定のCSSスタイルに変更
.remove() 指定した要素を削除
.addClass() 指定した要素にクラスを追加
.removeClass() 指定した要素にクラスを削除
<input type="text" id="userName" value="たかし"/>
<p id="sample">あいうえお</p>
<input type="radio" id="man" name="sex" value="1" /><label></label>
<input type="radio" id="woman" name="sex" value="2" checked/><label></label>

<script>
  // 値を取得
  $name = $("input#userName").val();
  alert($name);    // たかし
  // 値を変更
  $("input#userName").val("変更後");

  // テキストを取得
  $text = $("p").text();
  alert($text);    // あいうえお
  // テキストを変更
  $("p").text("変更後");

  // 属性(○○=××やchecked等)を取得
  // id属性の値を取得する例
  $id = $("p").prop("id");
  alert($id);    // sample
  // ラジオボタンがチェック済みか判定する例
  if($("#woman").prop("checked")){
    alert("女性");
  }
  // 属性(○○=××)を変更
  $("p").prop("id", "changed");
  // ラジオボタンのチェックをつける
  $("#woman").prop("checked","checked");
  // ラジオボタンのチェックを外す
  $("#woman").prop("checked","");

  // CSSを取得
  $color = $("#userName").css("color");
  alert($color);
  // CSSを変更
  $("#userName").css("color", "red");


</script>

$(this)

$(this)はイベントが発生した要素を指す

<p class="hoge">テキスト1</p>
<p class="hoge">テキスト2</p>
<p class="hoge">テキスト3</p>

<script>
$('.hoge').click(function(){
    $(this).css('color', 'red');    // ここでの$(this)はクリックされた要素だけを指す
});
</script>

each

jQuery.each() メソッド

jQuery オブジェクトをループ処理したい時
indexは省略可能

<p class="hoge">テキスト1</p>
<p class="hoge">テキスト2</p>
<p class="hoge">テキスト3</p>

<script>
  $("p").each(function(index) {
    if ($(this).text()=="テキスト2") {
        return true  // 次のループに行く(continueと同じ)
    }
    $(this).css("color", "red");  // テキスト2だけ色が変わらない
  });
</script>
<p class="hoge">テキスト1</p>
<p class="hoge">テキスト2</p>
<p class="hoge">テキスト3</p>

<script>
  $("p").each(function(index) {
    if ($(this).text()=="テキスト2") {
        return false  // ループ処理を終わる(breakと同じ)
    }
    $(this).css("color", "red");  // テキスト1だけ色が変わる
  });
</script>
.each() メソッド

引数で指定したオブジェクトをループ処理したい時
indexとvalは省略可能

<script>
  array = ["Apple", "Orange", "Grape"];

  $.each(array, function(index, val) {
      alert(index + ":" + val);  // 0:Apple 1:Orange 2:Grape
  });

</script>