2012-11-27 1 views
6

だから、私はこのようになりますいくつかのJavaScript/jQueryの持っている:私はjQueryのは、指定されたセレクタで動作し、var $fooへの結果のDOM要素を節約するという仮定の下で運営されてきたjQuery要素をvarに保存すると、使用時に要素が再探索されますか?

var $foo = $('#bar'); 
$foo.hide(); 

を...私が見る限り、それは真実です。

しかし、$foo.hide()を呼び出すと、jQueryは#bar要素を再検索しますか?

+0

いいえ..... –

+0

これはベストプラクティスと見なされます。再利用を計画している場合は、ほとんどの場合、jQueryオブジェクトへの参照を保存する必要があります。 – troynt

答えて

8

いいえ、$(elem)が呼び出されたときに参照されます。これは、要素への参照を格納するためにvarが使用される理由です。 varへの参照を格納するのがベストプラクティスです。次回のコードが使用され、古い参照が使用されるため、DOMを再度検索する必要はありません。私の理解から

//reference 
var a = $('#id'); 

//use 
a.hide(); 

//same reference, use again 
a.show(); 
+0

しかし、Andrewが提供したコードは有効です。 $関数は、DOM要素への参照を含むjQueryオブジェクトを返します。それ以降の任意の点で使用できます。 'var foo = $(" bar ")をお持ちの場合は、非表示にしてください。 foo.show(); '結果は** visible ** になります。 – Ash

+0

はい、有効なコードです:-) –

1

は、VARとしてjQueryオブジェクトを設定し、オブジェクトをキャッシュし、したがって、それはあなたがsomehtingを実行するためにそれを使用する必要がjQueryオブジェクト毎回を再構築しません。

このに関するいくつかの記事、here's the first one I found off google

私はしかし$('#bar')はそう、あまりいない建物、したがって、かなり速い(「バー」)のdocument.getElementByIdを直接参照していますが、オブジェクトの配列を持っている場合、それはより速くだと思います。 $('.class tagType')

関連する問題