web-dev-qa-db-ja.com

jqueryの$(this)とthisの違い

$(this)とthisの使用の基本的な違いは何ですか

$('.viewComments').click(function(ev){
    //returns the desired value
    alert(this.getAttribute('id'));

    //Gives an error sayin function is not defined 
    alert($(this).getAttribute('id'));

    //returns the desired value
    alert($(this).attr('id'));
});

「$(this)」には「this」が持つすべての機能が含まれると思っていましたが、そうではないようです。

それでは、$(this)とは正確には何ですか?そして

ハードウェアを使用しているときに使用可能な機能を知っていますか? (私はfirebugを介してそれらを取得できることを知っていますが、他の方法があるかどうかを知りたいです-いくつかのドキュメントがあるかもしれません)

64

thisはDOMオブジェクトであり、$(this)はその周りのjQueryラッパーです。

thisを使用する場合、DOMメソッドを呼び出すことができますが、jQueryメソッドは呼び出せません。 $(this)を使用する場合、jQueryメソッドを呼び出すことができますが、DOMメソッドは呼び出せません。

142

$(this)-この関数が呼び出されるイベントの現在のDOM要素を表す

thisキーワード-JavaScriptでは、これは常に、実行している関数の「所有者」、または関数がメソッドであるオブジェクトを指します。

8
Pranay Rana

JQueryでは、これはDOMオブジェクトを指し、_$(this_)は同じオブジェクトを指しますが、jQueryメソッドが追加されています

this.each()を呼び出すことはできません。それぞれがDOMメソッドではなく、jqueryメソッドであるためです

$(this).each()はjqueryオブジェクトを返すため、$(this)を呼び出すことができます。

3
each

役立つ2つの記事を次に示します。

これは何ですか? by Mike Alsup

jQueryのthis:demystified by Remy Sharp

2
Alek Davis

$(this)は、jQueryセレクターまたはオブジェクトにアタッチされたイベントを使用して選択された現在のオブジェクトです。

$('#myelement').click(.....がある場合、$(this)はクリックされた要素を参照するため、$(this).hide()はその要素を非表示にします。

1
griegs

jQueryでは、$()表記はjQueryセレクターの省略形であるため、$(this)と言うと、jQueryにオブジェクトを再選択するように要求しています。その後、通常のjQuery関数を使用できます。 「this」は、外側のjQuery呼び出しによって選択されたオブジェクトです。

0
Marco

$(this)はjQueryオブジェクトであり、jQueryのパワーと美しさを使用できますが、「this」キーワードでは、ネイティブJavaScriptを使用する必要があります。

0
Jithi Vasudev