2011-09-18 18 views
5

Uczę się manipulacji DOM za pomocą jQuery i chcę poznać najlepsze praktyki związane z przeglądarką.Manipulacje jQuery DOM - porównanie wydajności?

Powiedzmy, że mam dwa elementy DOM (div, p, ol, itp.) I chcę, aby użytkownik zobaczył tylko pierwszy element, a następnie zobaczy tylko drugi element.

Mógłbym:

  1. Korzystanie zastąpić()
  2. usuń() pierwszy element i add() drugi element
  3. hide() pierwszy element i show() drugi element

Jakie są różnice w wynikach pomiędzy:

  • 1 vs 2
  • 2 vs 3
  • 1 vs 3

Czy istnieją dodatkowe uwarunkowania skuteczności jeśli elementy są różnych typów? A może elementy to przyciski lub pola formularzy?

+1

Powiedziałbym, że zależy to od tego, w jaki sposób i gdzie generujesz znaczniki (tj. Jak elastyczny musi być), ponieważ na przykład musisz wygenerować zawartość strony JS podczas używania polecenia replace/remove/add. Jeśli naprawdę interesuje Cię wydajność, możesz łatwo przetestować swoje przypadki tutaj: http://www.jsperf.com – m90

Odpowiedz

6

Usuwanie i dodawanie elementów do DOM jest kosztowne pod względem zasobów z powodu browser reflow, gdzie przeglądarka musi ponownie renderować część lub całą stronę. Chcesz uniknąć reflows kiedy tylko możesz; są kosztowne.

Wymiana jest zasadniczo usuwanie, a następnie dodanie, więc powyższe dotyczy.

Pokazywanie i ukrywanie jest najlepsze, ponieważ dodaje tylko style do elementów.

Typy elementów, które stosujesz te metody również nie powinny prowadzić do zmian w powyższym.

Podsumowując, należy użyć .show() i .hide(), aby uzyskać najlepszą wydajność.

+0

Dzięki za uwagę na temat reflow. –

+0

Dziękujemy @Alex! Dla czytelników zainteresowanych dodatkowymi informacjami (oprócz linku) znalazłem kolejny opisowy artykuł, który warto udostępnić [z zespołu Opera] (http://dev.opera.com/articles/view/efficient-javascript/?page=3) –

1

Zasadniczo, jeśli chcesz coś ukryć, a następnie pokazać później, najlepiej jest ukryć() i pokazać(). Nie zmieni to niczego w domenie, tylko zmieni sposób wyświetlania.

Powiązane problemy