jQuery の on の中での this の使い方について。
いつも this を何となく使っていましたが、
ネットでみかけたサンプルを見たときに、
この this はどこを参照しているのか わからなくなったので教えてほしいです。
すごく簡単なことなんだど思いますが、よろしくお願いいたします。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>this???</title> </head> <style> .box { width: 50%; height: 100px; margin: 0 auto 10px; background-color: bisque; } p { margin: 0; font-size: 30px; line-height: 100px; text-align: center; color: #000; } .change { color: #ff0000; } </style> <body> <div class="box"> <p>今回のthisがわかんない。</p> </div> <div class="box"> <p>今回のthisがわかんない。</p> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $('.box').on({ mouseenter: function (e) { $(this).find('p').toggleClass('change'); console.log(this); this.x = e.pageX; this.y = e.pageY; $(this).find('p').text('x ' + this.x + ' : ' + 'y ' + this.y); }, mouseleave: function (e) { $(this).find('p').toggleClass('change'); console.log(this.x); console.log(this.y); } }); </script> </body> </html>
ネットのサンプルから、this の使い方だけ抜き出してきました。
ここでは単純に on を使って .box のなかにマウスが入った瞬間の座標を取得したり、
文字の色を変えたりするコードです。やっていることに意味はありません。
this の参照先が分からなくなった。
いつも on の中で this を使うときといったら、
今回のように $(this) でマウスが進入していった $('.box') に .find したり
.css で css をいじったりします。
または console.log(this) と書いて参照先をチェックしたりですよね。
ただ今回は、this.x とかってやっていたんですよ。
ここでプロパティを追加したことなかったので、というか見たこともなかったので
そんなことできるの??? ってなりました。
console.log(this)で確認しても
▶ <div class="box">..</div>
しかでてこないし、x や y はどこいった??? どうやったら中身が見れる???
mouseleave のなかでも this.x で参照できるし、mouseenter の中だけじゃないの???
と、混乱し始めました・・・。
この this.x とかの this はどこを指しているんでしょうか?
この x や y はどこにあるんでしょうか? どうやったら console とかで見れるのでしょうか?
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/30 07:41
2019/12/30 07:44
2020/01/02 04:49