2012-11-27 12 views
6

Tak, mam pewne JavaScript/jQuery, który wygląda tak:Czy zapisanie elementu jQuery do var powoduje, że element jest poszukiwany ponownie po użyciu?

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

byłem działający przy założeniu, że jQuery działa na danym selektorem i zapisuje wynikowy elementu DOM do var $foo ... co, o ile widzę, jest prawdą.

Jednak czy wywołanie $foo.hide() powoduje, że jQuery ponownie szuka elementu #bar?

+0

Nie jego nie ..... –

+0

Jest to uważane za sprawdzone metody. Powinieneś prawie zawsze zapisywać odwołanie do obiektu jQuery, jeśli planujesz ponowne użycie. – troynt

Odpowiedz

8

Nie, nie ma, odniesienie jest wykonywane, gdy wywoływane jest $ (elem). Z tego powodu używa się var do przechowywania odniesienia do elementu. Zawsze najlepiej jest przechowywać odniesienia do var, aby użyć następnego kodu czasowego, używane jest stare odniesienie i nie ma potrzeby ponownego wyszukiwania DOM.

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

//use 
a.hide(); 

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

Jednak podany kod Andrew jest ważny. Funkcja $ zwraca obiekt jQuery, który zawiera odniesienie do elementu DOM i można go użyć w dowolnym innym punkcie. Jeśli masz 'var foo = $ (" bar "). Hide; foo.show(); "wynik będzie ** widoczny ** . – Ash

+0

Tak, to jest prawidłowy kod :-) –

1

Z mojego zrozumienia, ustawienie obiektu jQuery jako var, buforuje obiekt, a zatem nie będzie odbudować obiekt jQuery każdym razem trzeba go używać do wykonywania somehting.

kilka artykułów dotyczących tego, here's the first one I found off google

Myślę jednak $('#bar') odnosi się bezpośrednio do document.getElementById („bar”) Więc nie tyle budynku i dlatego dość szybko, ale to szybciej, gdy masz tablicę obiektów . $('.class tagType')