2009-08-19 4 views
3

Webページ上のn個のテキストボックスのblurイベントに、次のJQuery関数を追加しました。JQueryと 'this'オブジェクト

$(document).ready(function() { 
     $("input[id$='_txtTuitionAmt']").blur(function() { 
      alert(this.value); 
     }) 
    }); 

うまく動作します。ユーザーが任意のテキストボックスからタブアウトすると、警告がポップアップし、テキストボックス内に値が表示されます。

私が混乱しているのは、 "this.value"と、それがJQueryかJavaScriptかどうかです。私は正しい方法で 'this'オブジェクトを使用していますか、または要素の値を取得するために他の何かを行う必要がありますか?

ご質問いただければ申し訳ありません。私はちょうど "この"オブジェクトとそれがどのように動作するかを把握しようとしています。私はJQueryのドキュメントを見ましたが、 "this"では何も見つかりませんでした。

+0

jQueryは呼び出しを使って 'this'を再バインドしたり、渡す関数のコンテキストがjQueryオブジェクトによって表されるDOM要素のコンテキストになるようにします。 – Nick

答えて

12

このは現在のDOMオブジェクト(すなわちdocument.getElementById("someid")が欲しかったDOMオブジェクトを参照するのと同じ方法)を指します。ブラウザに基づいて、そのオブジェクトの関数/フィールドにアクセスできるようになりました(つまり、this.nodeName, this.value、...)あなたはブラウザの実装によって提供されているものにアクセスしています。

あなたは$(この)(または$("#someid")または$(document.getElementById("someid")))を使用する場合は、jqueryのでオブジェクトをecapsulatingている - ので、あなたは今、jQueryの機能とフィールドにアクセスすることができます(。すなわち$(this).val(); $(this).find("somenode")、....)

jqueryオブジェクトがある場合(つまりvar n = $(this).find("#someid");)、jqueryカプセルを取り除きたい場合は、標準のdom関数が必要なので.get(0)を使用します。

このは、それが呼び出される場所によって異なるオブジェクトに解決することができます。http://www.quirksmode.org/js/this.html

+0

ああ...電球がちょうつがいだ!優れた説明。どうもありがとうございました! – Jagd

1

"this"は直前のjQueryで選択された要素を参照します。 jQueryコールバック関数の中で "this"を使用しているため、 "this"は実際にjQueryによって選択されたDOMオブジェクトを指しています。 "$(this)"を使用した場合、jQueryオブジェクトが直接的に公開されます。これは、一致する要素です。そして、他の人に言われているように、その要素にjQuery関数を適用することができます。

参照:this demystifiedおよびThe this keywordを参照してください。

+0

'this'はjQueryを参照していません。 Prakashが気付いたように、それはDOM要素を指しています。 –

7

が、これはDOM要素に

$(this)を= =一般的に、私はどこ私ができる、昔ながらのJavaScriptを使用し

をjQuery'ified。このインスタンスのjQueryの代替は$(this).val()です - 私はそれの必要性を見ません。 Core/eachため

+0

'$(this).val()'は、選択要素 'this.options [this.selectedIndex] .value'を扱うときには短く、複数のタイプの要素でも動作します。 – gnarf

3

jQueryのドキュメント:

は、すべての一致した要素のコンテキスト内で機能を実行します。

これは、渡された関数が実行されるたびに(これは一致するすべての要素に対して1回です)、 'this'キーワードが特定のDOM要素を指していることを意味します。 'this'はjQueryオブジェクトを指していないことに注意してください。

0

この記事を参照して、これがどのように機能するかを説明(しゃれを許しなさい) - ( -空自を出力します<div id="asdf" onclick="alert(this.id)...)、フォームまたは他のオブジェクトにはonclickのか、他のイベントハンドラ内で呼び出された場合のノードすることができもう少し:

Why I still prefer Prototype to JQuery

著者はそれjQueryライブラリの貧設計上の決定と考えるが、私はどちらかの方法を提唱していません。私はちょうどその記事がかなり興味深いと思った。

関連する問題