- ブログネタ:
- JavaScript に参加中!
jQueryのイベントハンドラやコールバック関数内のthisについてです。
大した内容でもありませんが、なんとなく知らないまま使っている人もいるみたいなので、ちょっとメモ書き。
$(this)とthisの違い
thisはDOMエレメントです。
イベントハンドラのthisはそのイベントが発生した要素、eachのコールバック関数内のthisは順番の回ってきた該当する要素です。
一方$(this)の方はと言うと、この要素を$関数に渡して、単にjQueryオブジェクト化しているだけなんですね。
使い分け
という事で、使い分けは、
- DOMエレメントのプロパティやメソッドを使うときはthis
- jQueryオブジェクトのメソッドを使いたいときは$(this)
ということになります。
例えば
a要素のhref属性を取ってきて何か処理を書こうと思ったとき、
何も考えず普通にjQueryを使って書くとこうなりますが、
$('a').each(function() { var l = $(this).attr('href'); … });
使わない方が速くて簡単だったりします。
$('a').each(function() { var l = this.href; … });
状況に応じて使い分けるのが良いですね。