1

このコードでは、要素 ID の値を 2 つの異なる方法で取得でき、両方の方法で結果が返されます。

$("#my_div").on("click", function () {
    alert( $(this).attr("id") );

    alert( this.id );
});

しかし、2番目の方法に興味がありますが、この場合は適切ですか? コードではjqueryセレクターを使用し、jqueryセレクターには明確なjavascriptを記述しているため、これを尋ねます。これは正当化され、常に機能しますか? またはjqueryセレクターにjquery $(this)を使用する方がよい でしょうか?違いますか?

4

4 に答える 4

6

this.id$(this).attr("id")「id」属性の値を返しながら、内部DOM要素のプロパティを提供します。

this.idjQueryの代替手段は、 prop()method:を使用することです$(this).prop("id")。ただし、純粋なthis.id構造を使用する方が簡単で高速です。

于 2012-09-06T09:51:00.190 に答える
3

メインの jQuery コンストラクターは、さまざまな種類の引数を取ることができます。

そのコンテキストでthisは、セレクターではなく、HTMLElementNode (jQuery がelementを呼び出します) です。

これは問題なく文書化されています。

ID を取得するだけであれば、要素を jQuery オブジェクトにラップするためにリソースを費やす必要はありません。そのため、ブラウザ間の互換性の問題はありません。

HTMLElementNodeのidプロパティを取得すると、jQuery ですべてをラップするよりも少ないコードで済み、高速になります。

于 2012-09-06T09:51:45.600 に答える
1

最適な方法を選択することは、常に明確であるとは限りません。

この場合、 が必要ですthis.id。他のソリューションでは、舞台裏でより多くの呼び出しが必要になるためです ( と への明らかな呼び出しjQuery) attr

ブラウザとは異なる詳細な情報が必要な場合は、jQuery の方法が必要です。

于 2012-09-06T09:54:41.797 に答える
1

はい、あなたの2番目の方法は適切です。

$("#my_div").on("click", function () {
    // this is available within this function
    alert( this.id );
});

thisHTMLDOMElementは関数内のを参照し、それをラップすると jQuery オブジェクトが得られますthis$()

clickハンドラー内で別の関数を定義する場合。元:

$("#my_div").on("click", function () {
    // keep reference of this
    var that = this;
    function test() {
     // this will not available here directly
     // instead of that you can use reference
     alert(that.id);
    }
});

And $(this).attr('id')this.idor$(this).prop('id')で同じ結果が得られます。

于 2012-09-06T09:51:25.153 に答える