2011-08-29 6 views
16

私はhttp://docs.jquery.com/Tutorials:Getting_Started_with_jQueryを読んでいました。そして、これら2つのコードセグメントでthisの使用を混同しました。

 $(document).ready(function() { 
     $("#orderedlist").find("li").each(function(i) { 
     $(this).append(" BAM! " + i); 
     }); 
    }); 

    $(document).ready(function() { 
     // use this to reset several forms at once 
     $("#reset").click(function() { 
     $("form").each(function() { 
     this.reset(); 
     }); 
    }); 
    }); 

我々は$(this)thisが必要なのですか?そしてそれらの違いは何ですか?前もって感謝します。

+3

「this」、「$ this」、「$ this」の違いは何ですか?](http://stackoverflow.com/questions/3889570/what-is-the-difference-この間これとこれの間に) – user113716

+1

@パトリック:私は重複しているとは思わない。 'this 'が別の部分で必要とされる間に' $(this) 'がこの特定のコードのある部分で必要とされる理由に答える価値があります。 – Blazemonger

+1

@ mblase75:まあ、私は同意しないと思います。その答えはチュートリアルですでに説明していることと相まって、重複しています。他の質問への答えを読むことで解決するはずです。チュートリアルから:* ".each()関数では、" this "は実際の要素を参照していることに注意してください。" * – user113716

答えて

16

thisは、DOM要素自体を指します。 $(this)は、要素をjQueryオブジェクトにラップします。

.append()はjQueryメソッドなので、最初の例では$(this)が必要です。

第2の例では、reset()はJavaScriptメソッドなので、jQueryラッパーは必要ありません。

7

thisそれ自体は単なる通常のオブジェクトです。

$(this)は、thisをとり、jQueryラッパーを追加することで、オブジェクトでjQueryメソッドを使用できるようになります。

3

は、DOMオブジェクトを指します。したがって、reset()はフォームDOMオブジェクトの関数です。一方、append()はjQueryメソッドなので、jQueryオブジェクトから呼び出さなければならないので、$(this)です。

this$で囲むと、そのDOMオブジェクトを表すjQueryオブジェクトが戻されます。

2

は、一般的にはjQueryで、thisは、問題のDOM要素のインスタンスになります、と$(this)はあなたにeach()val()のような通常のjQueryのメソッドを提供しますthis周りjQueryオブジェクトを構築します。

1

同じコード行でjquery関数を使用する場合は、$(これ)が必要です。

ex: $(this).find(...); $(this).val(); etc 

またはそれ以外の場合はthisが必要です。

関連する問題