0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

jQuery イベント汎用操作まとめ

Posted at

jqueryイベント汎用操作まとめです。

click/dblclick クリックイベント

準備

<body>
  <h1>クリックイベントタイトル</h1>
  <p>こちらをクリックしてください</p>
</body>
$(function() {
	// h1のクリックに処理を設定
	$("h1").click(function() {
		console.log("h1 タイトルをクリック");
	});

	// pのクリック用の処理
	var pClick = function() {
		console.log("p 本文をクリック");
	};
	var pWClick = function() {
		console.log("p 本文をダブルクリック");
	};

	// pのクリック、ダブルクリックに処理を設定
	$("p").click(pClick);
	$("p").dblclick(pWClick);
});

実行結果

Image from Gyazo

解説

クリックイベント/ダブルクリックイベントで
それぞれコンソールにテキストを出力しています

change submit serialize フォーム/シリアライズ系イベント

準備

  <body>
    <form id="f">
      名前:<input type="text" name="name"><br>
      性別
      <label><input type="radio" name="sex" value="m"></label>
      <label><input type="radio" name="sex" value="f"></label>
      <br>
      <label>
        <input type="checkbox" name="tos" value="ok">
        利用規約の確認
      </label>
      <br>
      <input type="submit">
    </form>
  </body>

実行結果

Image from Gyazo

解説

.change() 変更を検出する

ラジオボタンを変更した時に情報をコンソールに出力します

$(":radio").change(function() {
		let name = $(this).attr("name");
		let val = $(this).val();
		console.log(name, val);
	});

.changeメソッドで値の変化を検出する関数を作成します

.attr()メソッドは選択したフォームのname属性を取得します(ここではsex)

.val()メソッドはvalueの値を取得します(ここではm/f)

結果

Image from Gyazo

同様にチェックボックスと入力欄の変更を検出する関数を作る場合は以下です。

	// チェックボックスの値変更
	$(":checkbox").change(function() {
		let name = $(this).attr("name");
		let isChecked = $(this).prop("checked");
		console.log(name, isChecked);
	});

	// 入力欄の値変更
	$(":text").change(function() {
		var name = $(this).attr("name");
		var val = $(this).val();
		console.log(name, val);
	});

.prop(条件)メソッドは条件を判定してtrue/falseを返します(ここでは"checked"の有無)

.submit .serialize() .serializeArray() データを送信する/送信したデータを取得する

// submitの処理
$("#f").submit(function() {
  console.log(this);
  // フォームデータのシリアライズ		  
    console.log($(this).serialize());
    console.log($(this).serializeArray());
  // イベントを停止
    return false;
 });

実行結果

Image from Gyazo

解説

.submit()メソッドはsubmitボタンではなくフォーム全体を指定します(コンソール1行目)

.serialize()メソッドではデータとして送信する値を取得できます(コンソール2行目)

.serialiezeArray()メソッドではデータとして送信する値を配列にして取得します(コンソール3行目)

最後にreturn falseとしているのはイベントの伝搬を停止するために記述しています

resize/scroll ウィンドウ変化系イベント

準備

<body>
  <h1>サイズ変更タイトル</h1>
  <p>サイズ変更本文です</p>
</body>
$(function() {
	// ウィンドウサイズ変更
	$(window).resize(function() {
		var w = $(window).width();
		var h = $(window).height();
		console.log(w, h);
	});

	// 行を増やす
	for (var i = 0; i < 5; i ++) {
		var p = $("p").clone();
		$("body").append(p);
	}

	// スクロールの処理
	$(window).scroll(function() {
		var top = $(window).scrollTop();
		console.log(top + "px");
	});
});

実行結果

Image from Gyazo

解説

.resize()メソッドではwindow(ブラウザ)のサイズ変化を検出し
幅と高さをコンソールへ出力しています

.scroll()メソッドではまずfor文でp要素を.clone()メソッドにて複製し
.append()メソッドでbodyの末尾に挿入しています

スクロールできる状態ができたのでwindowをターゲットに
.scrollTop()メソッドで上からの位置を取得してコンソールへ出力しています

focus/blur/focusin/focusout フォーカス系イベント

準備

  <body>
    <div id="out" style="background: #faa; padding: 2em;">
      <input type="text" id="text1">
    </div>
    <input type="text" id="text2">
  </body>

$(function() {
	// フォーカス
	$("#out, #text2").focus(function() {
		var id = $(this).attr("id");
		console.log("focus", id);
	});

	// ブラー
	$("#out, #text2").blur(function() {
		var id = $(this).attr("id");
		console.log("blur", id);
	});

	// フォーカス イン(子要素も対象)
	$("#out, #text2").focusin(function(e) {
		var id = $(this).attr("id");
		var idTrgt = $(e.target).attr("id");
		console.log("focusin", id, idTrgt);
	});

	// フォーカス アウト(子要素も対象)
	$("#out, #text2").focusout(function(e) {
		var id = $(this).attr("id");
		var idTrgt = $(e.target).attr("id");
		console.log("focusout", id, idTrgt);
	});
});

実行結果

Image from Gyazo

解説

上段のテキストボックスはdivで囲まれたid=outに対してfucusイベントを設定しています。

そのため子要素を判定しないfocus/blurメソッドではid=text1にフォーカスをしてもイベントは検知されません

子要素も検知対象とするfocusin/focusoutメソッドではthisのidとしてoutがイベントターゲット(e)のidとしてtext1が検出されます

直接id=text2に各メソッドを当てた場合はいずれもイベントが検出されます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?