2014-12-16 15 views
6

zacząłem pracę nad jakimś projektem, a w kodzie znajdę combintions o $ (document) .find ('selektor') i $ ("selektor"). Nie mogę znaleźć żadnego prawdziwego powodu, dla którego to się robi. Czy istnieje między nimi znacząca różnica, tak aby były one używane jednocześnie w projekcie? Czy w niektórych przypadkach powinienem preferować jeden przed drugim?

+1

pomocą wybieraka bezpośrednio dostęp do elementów, które chcesz przy użyciu find() szukać DOM znalezienie elementów, które potrwa dłużej – Mivaweb

+1

@VDesign używając '$ („div”)' nadal wymaga szukać w całym DOM, prawda? – Regent

+0

@ Prawidłowe zachowanie! – Mivaweb

Odpowiedz

6

$(document).find("selector") i $("selector") dopasuje ten sam zestaw elementów.

Nie ma powodów, by używać $(document).find(...) ciągu zaledwie $(...), a kilka powodów, aby nie:

  1. To już pisać i bardziej niewygodne do czytania, pompowania rozmiar skryptu

  2. Skutkuje więcej moduł pamięci (więcej tymczasowych obiektów jest tworzonych/niszczonych)

  3. Jest wolniejszy - http://jsperf.com/vs-document-find, http://jsperf.com/selector-vs-find-again

enter image description here

+0

1. Bez żadnych wątpliwości. 2. Czy zostało to gdzieś stwierdzone, czy może być w jakiś sposób przetestowane? Brzmi logicznie, ale mimo wszystko ... 3. Dla ID jest oczekiwany wynik, ale dla selektora podstawowego nie widzę dużej różnicy (no, selektor też tam wygrywa, tak). – Regent

+0

@Regent: Re 2: '$ (document)' przydziela i zwraca obiekt, następnie '.find (" selektor ")' przydziela i zwraca * nowy * obiekt. –

1

$(document).find(selector) i i obie szukają selektora w dokumencie.

3

Są funkcjonalnie równoważne. Nie ma żadnej różnicy w zachowaniu między $("selector"), $(document).find("selector") i $("selector", document).

Jeśli chodzi o wydajność, niektóre z wariantów może być nieco wolniejszy niż inni (ponieważ metody te są realizowane w warunkach innych). Jest to jednak szczegół implementacji i może ulec zmianie między wydaniami. Benchmarking konkretnej wersji dałoby pewność.

+1

Nieuzasadniona perf: http://jsperf.com/vs-document-find '$ (document) .find (...)' również powoduje więcej pamięci rezygnacji (podobnie jak '$ (" selektor ", kontekst)' as wszystko co się dzieje to jQuery konwertuje je do '$ (context) .find (" selector ")'). –