this イベントが発生したオブジェクトと聞いたのですが、
つまり下記のようにイベントファンクションでイベントを起こす要素が必ずthisになると考えてよいでしょうか?
$('textaret').click(function() {
であれば
$('必ずここがthis').click(function() {
また、イベントの起きている要素というのもはっきりする場合とよくわからない場合があるのですが、どのように特定していますか?
初心なので、恐縮ですが、初心者にもわかるように解説いただける方にお願いします。
また、無意味にマイナス評価する人がまれにいますが、そのような迷惑行為はやめてください。通報をしておきます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/04 08:02
2017/01/04 10:25
回答3件
0
ベストアンサー
this
は確かに分かりづらいですよね。
this
のイメージをつかむには、コンテキスト、つまり「文脈」を理解するといいと思います。
今、その関数を実行しているのは誰か、を考えるということです。
日本語でも「ここ」と言われた場合、家の中か、駅のホームか、オフィスか学校か。
「今いる場所=文脈」によって意味が変わりますよね。
例えば上記の例で言えば「ここのトイレはどこですか?」と聞けば、大概の人は今その場にいる場所のトイレの場所を教えてくれるでしょう。
まさか自分の家のトイレの場所を教える人はいないと思います。
そして仮にthis
がなかった場合、結構めんどくさいことになります。
すでに駅構内にいるのに「○○駅のトイレはどこですか?」なんて聞く人はいません。
しかし、this
がなかった場合はこれと同じような回りくどい指定をしないとならなくなります。
こうしためんどくささを解消するのがthis
の役割です。
そしてJavaScriptの場合、このthis
が結構頻繁にころころ変わるため、初学者を苦しめる要因でもあると思います。
つまり今回の場合で言えば、click
関数をつけた要素がthis
になる、ということですね。
実際コーディングしていくと、this
がclick
関数をつけた要素自体を指してくれているほうが便利なことが多いです。
(クリックされたら要素の色を変える、とかの場合ならなおさらクリックされた要素=this
という状況が望ましいですよね)
投稿2017/01/04 07:32
編集2017/01/04 07:38総合スコア2283
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/01/04 08:06
2017/01/04 08:13
退会済みユーザー
2017/01/04 08:52
2017/01/04 09:08
退会済みユーザー
2017/01/04 09:24
退会済みユーザー
2017/01/04 09:25
2017/01/04 09:30
退会済みユーザー
2017/01/04 12:19
退会済みユーザー
2017/01/04 12:22
退会済みユーザー
2017/01/04 13:24
2017/01/04 13:36
退会済みユーザー
2017/01/04 23:00
退会済みユーザー
2017/01/04 23:19
退会済みユーザー
2017/01/04 23:49
2017/01/05 01:06
退会済みユーザー
2017/01/05 02:24
0
イベントの起きている要素というのもはっきりする場合とよくわからない場合があるのですが、どのように特定していますか?
↓これらを参照します。
イベントを発生させたオブジェクトへの参照します。
Event.target - Web API インターフェイス | MDN
イベントは DOM を横断するので、イベントの現在のターゲットを識別します。イベントが発生した要素を特定する event.target とは対照的に、常にイベントハンドラがアタッチされた要素を参照します。
投稿2017/01/04 06:52
総合スコア36074
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
質問の意味がさっぱりわからないので閲覧者にもわかるよう説明してほしいのですが・・・
clickないで指定したthisは自分自身でまちがいありません。
javascript
1<script> 2$(function(){ 3 $('textarea').click(function() { 4 console.log($(this).val()); 5 }); 6}); 7</script> 8<textarea>x</textarea> 9<textarea>y</textarea> 10<textarea>z</textarea> 11
イベントに関する追記
ちょっと複雑な書き方になると、document全体からtextareaタグ(セレクタ)に対して
複数のイベントを拾う場合こうなります
<script> $(function(){ $(document).on('mouseover click change','textarea',function(e) { console.log($(this).val()); console.log(e.type); }); }); </script> <textarea id="XXX">x</textarea> <textarea id="YYY">y</textarea> <textarea id="ZZZ">z</textarea>
イベントはあくまで所定のトリガーから発生したまさに「イベント」でしかなく
thisは自分自身を指定するためのオブジェクトでしかないです
投稿2017/01/04 03:05
編集2017/01/04 03:19総合スコア114769
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。