7

Web ページ上の n 個のテキスト ボックスのぼかしイベントに次の JQuery 関数が関連付けられています。

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

それはうまく動作します。ユーザーがいずれかのテキストボックスからタブで移動すると、アラートがポップアップし、テキストボックス内に値が表示されます。

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

私の質問が少し曖昧に思えたら申し訳ありません。「この」オブジェクトとそれがどのように機能するかを理解しようとしています。JQueryのドキュメントを調べましたが、「これ」については何も見つかりませんでした。

4

5 に答える 5

15

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

$(this)(または$("#someid")または)を使用する場合$(document.getElementById("someid"))jqueryでオブジェクトをカプセル化するため、jqueryの関数とフィールドにアクセスできるようになります(つまり$(this).val(); $(this).find("somenode")、....)

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

これ自体は、呼び出される場所に応じて、さまざまなオブジェクトに解決できます。onclickまたは他のイベントハンドラー( -asdf<div id="asdf" onclick="alert(this.id)...を出力します)、フォーム、または他のオブジェクト内で呼び出された場合、ノードになる可能性があります-http://www.quirksmode.org/js/this.htmlを参照してください

于 2009-08-19T21:21:40.013 に答える
8

this = DOM 要素

$(this) = jQuery化

通常、私は可能な限り普通の古い JavaScript を使用します。この場合の jQuery の代替案は次のとおり$(this).val()です。その必要性はわかりません。

于 2009-08-19T21:09:10.147 に答える
4

Core/eachの JQuery ドキュメント:

一致したすべての要素のコンテキスト内で関数を実行します。

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

于 2009-08-19T21:12:10.127 に答える
1

「this」は、直前に選択された jQuery 要素を指します。jQuery コールバック関数内で「this」を使用しているため、「this」は実際には jQuery によって選択された DOM オブジェクトを指しています。「$(this)」を使用すると、一致した要素である jQuery オブジェクトが直接公開されます。他の人が述べたように、その要素にjQuery関数を適用できます。

参照: this demystified、およびthis キーワード

于 2009-08-19T21:07:18.920 に答える
0

この記事(駄洒落を許してください)は、これがどのように機能するかをもう少し説明しています:

JQueryよりもプロトタイプを好む理由

著者はそれをJQueryライブラリの設計上の決定としては不十分だと考えていますが、私はどちらの方法も支持していません。記事がかなり面白いと思っただけです。

于 2009-08-19T21:22:55.813 に答える