8

なぜこれほど多くのjqueryプラグインで$(this)が$ thisを指すように設定されているのか疑問に思いました。ページに次の2つのプラグインが含まれている場合、例を次に示します。

(function($) {
   jQuery.fn.pluginOne = function() {
      return this.each(function() {
         $this = $(this); <--
         alert($this);
      });
   };
})(jQuery)

(function($) {
   jQuery.fn.pluginTwo = function() {
      return this.each(function() {
         $this = $(this); <--
         alert($this);
      });
   };
})(jQuery)

domreadyで両方のプラグインを呼び出すと:

$(document).ready({
   $('.myClass').pluginOne();
   $('.myOtherClass').pluginTwo();
});

最初のプラグインは2番目のプラグインから$thisを取得します...それが$(this)をローカル変数にポイントしている間:

(function($) {
   jQuery.fn.pluginTwo = function() {
      return this.each(function() {
         var trigger = $(this); <--
         alert(trigger);
      });
   };
})(jQuery)

もちろん、すべてがうまくいくはずです...

だから私の質問は...いつ$thisを使うべきですか?

ありがとう

4

3 に答える 3

12

$ thisは、実際のjQueryオブジェクト$(this)を変数にキャッシュするために使用される標準です。

あなたはそれをあなたが望むものと呼ぶことができます、何人かの人々はそれを$selfと呼ぶのが好きです。

例えば

var $self = $(this)

コードを見ているときに、それが通常のdomオブジェクトではなくjQueryオブジェクトであることを認識するのに役立ちます。

jQuery変数のインスタンスを1つだけ作成するため、パフォーマンスが向上します。

于 2009-07-21T11:19:00.470 に答える
9

$Javascriptの変数名と関数名の正当な文字です。$変数のみを表すために使用されるPHPから来ている場合、これは混乱を招く可能性があります(気付くのに少し時間がかかりました)。

  • jQueryでは、はDOM選択を処理するメイン関数である$関数のエイリアスです。と同じです。簡潔にするために使用されます。jQuery$("#header ul.menu")jQuery("#header ul.menu")$

  • thisは、現在の要素を意味するJavascript(jQではない)の特別な用語です(this.submit()たとえば、表示される形式で)。

  • $(this)jQuery「 Javascriptで関数を呼び出す」という意味thisです。

  • $this$は有効な文字であるため、は単なる変数です。任意の値に設定でき$this、Javascriptとはまったく関係ありませんthis。一般に、jQuery関数との混同を避けるために、変数名に$を使用しないことをお勧めします。ただし、$var通常のJavascript変数ではなく、jQueryオブジェクトを示すために使用すると便利な場合があります。

于 2009-07-21T12:01:01.807 に答える
2

jQueryオブジェクトでラップされた要素を使用してさまざまなコマンドを実行している場合は、要素を(ラップされたセットとして)一度だけ取得し、それをローカル変数に格納する方がパフォーマンスが高くなります。

var $this = $(this);
// then use $this in your function. 

varローカルスコープへのの使用に注意してください$this

于 2009-07-21T11:21:12.713 に答える