jQuery でプログラムを書いている際に「$(this)」と「this」の使い方で一瞬戸惑うことがありませんか?
基本的に「this」のほうは[DOMエレメント]で、イベントハンドラの「this」はそのイベントが発生した要素になり、「each」のコールバック関数内の「this」は順番の回ってきた該当する要素になります。
そして、「$(this)」はこの要素を$関数に渡して、[jQueryオブジェクト]化しているというワケ。
- 「$(this)」はjQueryオブジェクト。
- 「this」はDOMエレメント。
…このように使い分けることになります。
一例として、「a要素のhref属性を取得して何らかの処理を行う」とき、jQueryの「$(this)」を使うときと、単に「this」を使うときとでは、以下のような違いが生まれます。
$(function{ $('a').each(function() { var sample = $(this).attr('href'); // ここに処理を書く }); });
上記が[jQueryオブジェクト]ヴァージョン。
下記が[DOMエレメント]ヴァージョンになります。
$(function{ $('a').each(function() { var sample = this.href; // ここに処理を書く }); }); });
それぞれの違いを比べると、「$(this)」はa要素のjQueryオブジェクトとして作用するので、「$(this).jQueryメソッド」でメソッドが呼び出されることになります。
一方、「this」はa要素そのものを示すので、「this.href」などとして属性値を取得することができます。
初心者のjQueryプログラマーの方はお間違えのないように!