2016-05-28 10 views
0
var x = $("element"); 
$(x).width(95); 

非常に、非常に新しいJQueryです。私は、DOMから項目を取得し、その項目にjQuery関数を使用したいと思います。 DOMからアイテムを何度も何度もやり直していないことを確認したい。これを行うか、DOMから2回目にアイテムを取得しますか?変数にJQuery関数を使用できますが、JQueryがDOMを繰り返し参照することはできませんか?

私はこれを避けてjQuery関数を使用できますか?どうすればいい?

気にする必要がありますか?私は本当にすべきだと感じています。

+0

「x.width(95);」 – Amit

+0

Amitが正しいです。しかし、他方では、 'x' *がすでに見つかっていないjqueryオブジェクトであることをすぐに認識するのに十分なほどjqueryが巧妙ではないのですか? – cars10m

+0

@ cars10それは、それと別のオーバーロードがあります:[* jQueryオブジェクトが '$()'関数に渡されると、オブジェクトのクローンが作成されます。この新しいjQueryオブジェクトは、最初の* [](http://api.jquery.com/jQuery/#jQuery- object)と同じDOM要素を参照します。 – GSerg

答えて

3

DOMから何度も何度もアイテムを取得しないようにしたいと思います。これを行うか、DOMから2回目にアイテムを取得しますか?

$()要素のコレクションを含むjQueryオブジェクトを返します。それらはすでにDOMで発見されています。

あなたはそれがすでに「$」で、どちらか$にそれを渡す必要はありません。

var x = $("element"); 
x.width(95); 

あなたはcreates a copy of the collectionこと、$$オブジェクトを渡した場合 - それは、再びアイテムを検索しません、それはリストをクローンします。

気にする必要がありますか?私は本当にすべきだと感じています。

はい、そうしてください。 DOMに対してセレクタを実行すると高価になる可能性があります。あなたは毎回それを実行したくありません。

0

同じDOM要素に複数回アクセスしようとしているときに、パフォーマンスについて考えるのは間違いありません。

var x = $("element");これは、DOMから要素を取り出してxに格納します。 x.width(95);は、$(x) againを使わずに直接行うことができます。 jQueryのほとんどの関数はthisへの参照を返すので、関数を連鎖させることができます。したがって、x.function1().function2()のように関数をさらに呼び出すことができます。

関連する問題