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

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

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

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

Q&A

解決済

2回答

1865閲覧

jQueryでthisが想定通りの値にならない

退会済みユーザー

退会済みユーザー

総合スコア0

jQuery

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

0グッド

0クリップ

投稿2018/04/11 01:32

jQueryの挙動でわからないことがあるので質問します。

ボタンを3つ作ってその全てに同じクラスを割り当て、該当のクラスがクリックされたらクリックされたボタンだけに処理を行いたいのですが、
以下のコードで動かそうとすると上手くいきません。
クラスにクリックイベントを指定して、その中で$(this)を使えばクリックされたボタンだけ取得できると思ったのですが…
どうすればクリックしたボタンにだけ処理を付けられるのでしょうか(idを振らない形で実現するには?)?

$('.menu-btn').click(() => { // const menuList = $('.menu-list'); // 想定通り console.log($('.menu-list')); // thisが取得できない(windowをとっている) console.log($(this)); });

コードはcodepenで公開しています。
https://codepen.io/datenshidon/pen/YadQyo

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

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

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

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

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

m.ts10806

2018/04/11 01:34

外部サービスのURLだけではなく、念のため質問にもコード(HTML含めて)提示願います。
guest

回答2

0

ベストアンサー

=>を使ったアロー関数は、this外側のthisに固定してしまうので、jQueryで返ってくるはずのthisを受け取ることができません。

取る手段としては2つ考えられます。

  • =>ではなくfunctionでコールバックを書く
  • (e) => {...}のように書いて、e.currentTargetjQueryリファレンス)から同じ値を回収する

投稿2018/04/11 01:36

maisumakun

総合スコア145184

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

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

退会済みユーザー

退会済みユーザー

2018/04/11 01:42

ありがとうございます。想定通りに動きました。 まさかアロー関数がいけなかったとは考えつきませんでした!
guest

0

arrow functionを使わずに、普通のfunctionで試してみて下さい。

追記

アロー関数式 は、function 式より短い構文で、this, arguments, super, new.target を束縛しません。アロー関数式は、メソッドでない関数に最適で、コンストラクタとして使うことはできません。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/arrow_functions

投稿2018/04/11 01:36

編集2018/04/11 01:42
HayatoKamono

総合スコア2415

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

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

退会済みユーザー

退会済みユーザー

2018/04/11 01:42

ありがとうございます。想定通りにうごきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問