0

次のコードがあります。

$('#detailData')
    .on('change', '.updatable', function () {
        var type = $(this).attr('id').split('_')[1];
        updateField(entity, $(this), type);
        return false;
    })

$(this)コードに追加して複数回使用したいと思います。this明確にするために、変数に割り当てたいと思います。$jQuery を使用するとき、変数名の前にa を置く人を見てきました。以下が正しいと言うのは正しいですか?

var $abc = $('#abc');

$(this)それが正しい場合、DOM変数を正しく指していることがわかっている場合、どのように名前を付ける必要がありますか。また、DOM 変数と で返されるものに違いはあります$('#abc')か?

4

4 に答える 4

7

$this格納するために使用する$(this)のは単なるコード規則であり、問​​題の変数が純粋な DOM 要素ではなく、すでにjQuery オブジェクトであることをプログラマーに思い出させるために使用されます。

次のように書くというよくある間違いを避けるのに役立ちます。

var foo = $(...);
$(foo).doSomething();

間違いは無害ですが、わずかに効率の悪いコードが発生します。

逆に、 using$fooは、ネイティブ DOM 関数をその変数で直接呼び出すことはできず、代わりに$foo[n]or$foo.get(n)を使用して、囲まれた DOM 要素にアクセスする必要があることをプログラマーに思い出させます。

this また、は単なる純粋な DOM 要素であるため、必要に応じてネイティブ DOM 関数またはプロパティを使用できる (および使用する必要がある) ことを忘れないでください。

var type = this.id.split('_')[1];
于 2012-09-25T11:21:24.863 に答える
1

$thisかなり一般的ですが、それは完全にあなた次第です。一貫性が最も重要です。

于 2012-09-25T11:21:40.537 に答える
0

の用法:

var $this = $(this);

通常、関数が this のコンテキストでオブジェクトへの複数の個別の呼び出しを呼び出す場合です。Jquery が必要なオブジェクトの dom を再スキャンするため、この dom オブジェクトを 1 回フェッチする必要があるため、パフォーマンス コストがかかるという考え方です。オブジェクトをローカル スコープに割り当てることにより、$(this) よりも $this を再利用するコストが少なくなります。

$this をローカル変数名として使用することは、ほとんどの開発者にとって一般的な命名スキームです。

$('#detailData').on('change', '.updatable', function (){
    var $this = $(this),
        type = $this.attr('id').split('_')[1];
    updateField(entity, $this, type);
    return false;
});
于 2012-09-25T11:27:39.127 に答える
0
 //jQuery to jQuery object
 $myvar = $(this);

 //jQuery to JavaScript HTML object
 var myVar = $(this)[0];
于 2012-09-25T11:23:05.237 に答える