質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

7089閲覧

onメソッドの第2引数のある無しの違いについて。

tkshp

総合スコア174

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/08/31 16:39

編集2018/08/31 16:40

前提・実現したいこと

jQueryのonメソッドで、下記2つの違いについてご教示お願い致します。

該当のソースコード

html

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>sample page</title> 6<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 7<script src="sample01.js"></script> 8<link id="link1" rel="stylesheet" href="sample.css"> 9</head> 10<body> 11 <button class="change">変更</button> 12 <div id="myid" class="sample">テスト</div> 13</body> 14</html> 15

下記、コメントで実行した場合と、コメントじゃない方とで実行した場合とで、
今回のコードでは結果に違いが無かったのですが、
一般的にこの2つのonメソッドの書き方の違いは何ですか?
使い分けやどちらの書き方の方が推奨などありましたらご教示お願い致します。

また、コメントの方の書き方がよくわかってないのですが、
「documentの.changeをclickしたら関数を実行」というコードなのでしょうか?

・sample01.js

jQuery

1$(function() { 2 //$(document).on("click", ".change", function(e) { 3 $(".change").on("click", function(e) { 4 $('#myid').removeClass('sample'); 5 $('#myid').addClass('sample2'); 6 }); 7});

・sample.css

css

1.sample{ 2 color: blue; 3} 4 5.sample2{ 6 color:red; 7}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

$(document).on("click", ".change", ()=>{} )
そのコードを実行した時点にHTML上に無い、追加した .change 要素のクリックにも反応します。

【jQuery: 文書ツリー上に存在しない要素に対してイベントリスナーを追加するには?(on) - Build Insider】
https://www.buildinsider.net/web/jqueryref/017

【イベントデリゲートで理解するjQueryのonメソッド - to-R】
http://blog.webcreativepark.net/2013/12/01-215447.html

【jQuery の.on()をもういっぺん理解してみる - あまり新しくないもの】
http://rtshaaaa.hateblo.jp/entry/2013/12/03/102836

投稿2018/08/31 17:07

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkshp

2018/09/02 03:52 編集

ご回答ありがとうございます。 検証できました。 親セレクタを指定する書式の方がよさそうですね。
kei344

2018/09/02 04:03

要件によります。直接指定可能であれば指定してしまえば良いと思います。あとバブリングしないイベントとかもあったはず。
tkshp

2018/09/02 04:14

ご回答ありがとうございます。 勉強になります。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問