Istnieją różne koszty, spójrzmy na nich:
$('#mybutton').live('click', function(e){ doSomething(); });
Są 2 główne koszty tutaj:
- Selektor
#mybutton
musi uruchomić natychmiast bez powodu (wynik jest wyrzucany Chcieliśmy po prostu wybrać selektor ... wiążemy się z document
). W tym przypadku jest to #id
selector, więc jest to bardzo niski koszt ... w innych przypadkach nie jest tani i bardzo nieekonomiczny (na przykład [attr=something]
).
- Każdy
click
, który ma bańki do document
, musi teraz zostać sprawdzony pod kątem tego selektora, kosztu oceny za kliknięcie, zależy to od oczekiwanej liczby kliknięć.
Teraz spójrzmy na inny sposób:
$('#mybutton').click(function(e){ doSomething(); });
Są 2 główne koszty również tutaj:
- W
#mybutton
działa selektor, ale tylko raz na żądania ajax . Jednak nie marnujemy go, używamy wyników.
- Handler
click
jest zobowiązany do rzeczywistego elementu, zamiast document
, więc nie ma wiążącej kosztować każdorazowo działa, raczej niż raz
Jednakże, nie ma koszt za kliknięcie, a połączenie selektor nie jest zmarnowany ... więc ogólnie jest lepszy, , ponieważ używasz identyfikatora, nie jest to prawdą w innych przypadkach.
W twoim przypadku, ponieważ masz do czynienia z ID (i gwarancją pojedynczy element), jest to znacznie tańsze:
$('#mybutton').click(function(e){ doSomething(); });
W innych przypadkach, gdzie jesteś wiążący setki elementów, .live()
, są wyraźnym zwycięzcą, choć byłoby jeszcze lepiej.
http://www.artzstudio.com/2009/04/jquery-performance-rules/ –