2010-10-04 14 views
16

Wciąż uczę się o jQuery, ale nie byłem w stanie znaleźć solidnej odpowiedzi. Wiem, że za każdym razem, gdy używasz selektora jQuery $(...), występuje koszt wydajności, ale czy ma on znaczny koszt, w którym należy go buforować przed użyciem?

var $this = $(this); 
+0

Dla odniesienia, koszt $ (this) to: http://stackoverflow.com/a/6587740/781695 – Medorator

Odpowiedz

11

Jeśli używasz bardzo dużo, tak to ma sens, czy łańcuch, np .:

$(this).fadeIn().fadeOut().somethingElse(); 

Jeśli tak drogie? Naprawdę nie w wielkim układzie rzeczy ... ale jeśli jesteś w pętli, koszt się zwielokrotnia, więc najlepiej go buforować. Jeśli używasz go więcej niż jeden raz, to ma sens, , ile sensownego znaczenia ma, w zależności od tego, jak dużo mocy ma znaczenie dla tego fragmentu kodu, który przypuszczam.

0

Dobre pytanie, Jason. Wyobrażam sobie, że funkcja selektora jQuery dość trafnie dostrzega słowo kluczowe this. Powiedział, że nie ma sensu nie powtarzać połączeń z tym samym selektorem, jeśli możesz tego uniknąć. To jest, gdy przychodzi metoda łańcuchowym przydatne:

$(this).hide().show().hide(); 

Jeśli masz zamiar używać tego samego Selektor dużo w różnych punktach w tej samej funkcji, prawdopodobnie uczynić zmiennej do przechowywania wartości Powrót Funkcja selektora jQuery. Nie ma tego, nie martwiłbym się o to, ponieważ jest to naprawdę bardzo, bardzo mała ilość przetwarzania, która jest wykonywana ... szczególnie, ponieważ jestem dość pewny, że biblioteka jQuery sprawdza to słowo kluczowe (i typ łańcucha) przed uruchamia wszelkie wyrażenia regularne.

+5

jQuery nigdy nie zobaczy "tego". Otrzymałby tylko referencję, że "ten", o którym mowa w tym punkcie kodu. Nie może traktować go specjalnie. – bambams

+0

Ah ha ... i to ma sens. Mimo to, konkretne odniesienie do elementu na pewno nie zajmie bardzo dużo przetwarzania, zanim funkcja zwróci wartość, w porównaniu do przekazywania w selektorze ciągów znaków. – treeface

+0

Jedną z pierwszych kontroli, którą zrobi jQuery, jest sprawdzenie, czy selektor jest DOMElement, a jeśli tak, po prostu zwróć zawinięty element. Nie mam nic przeciwko ludziom używającym '$ this', ponieważ dobrze jest wejść w zwyczaj buforowania selektorów, ale w przypadku" tego "nie ma znaczenia, z którym się wybierasz. –

Powiązane problemy