Jeśli ładuję moje skrypty jQuery pod całym moim HTML strony, czy nadal muszę czekać na $(document).ready
, aby móc używać jQuery do znajdowania elementów na stronie?
Odpowiedz
Wykonujesz nie musisz użyć funkcji jQuery's ready
, ale twój kod musiałby być napisany z myślą o tym. Wszelkie click
lub inne programy obsługi oparte na powiązaniach mogą nie łączyć się prawidłowo z selektorami, jednak inne, takie jak live
i $.ajax
, mogą działać zgodnie z przeznaczeniem.
Należy zachować ostrożność podczas korzystania z programów ładujących skrypt lub AMD przy użyciu tej metody. jQuery musi być dostępna i należy zablokować podczas ładowania. Załaduj jQuery i inne deps do głowy.
świetny wygląd w tej technice, która opisuje, że nie jest to niezbędne do korzystania z jQuery do funkcji (niekoniecznie na temat stosowania w stopce):
http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/
Dlaczego "kliknięcie" (lub selektory) nie działa? –
(Ten link mówi o używaniu skryptów w pozycji HEAD, ale nie o pozycji FOOT). –
To działałoby dla wszystkiego, co jest dostępne w DOM przed wykonaniem. Wszystko ładowane później, za pomocą dowolnych środków, takich jak ajax lub dodane w kolejnej zmianie dokumentu, nie zostanie odebrane przez kliknięcie jQuery 'click' – philwinkle
No nie trzeba $(document).ready
dla dowolnego kod, który współdziała z elementami DOM na stronie, jeśli skrypty są umieszczone poniżej tych elementów.
Dobrą praktyką jest umieszczanie ich przed zamykającym tagiem </body>
.
Znacznik HTML ma tylko dwa ważne elementy podrzędne, nagłówek i treść, więc najprawdopodobniej lepiej jest umieścić znaczniki skryptów w tagu zamykającym treść. Analizatory składni mogą być dziwne z nieprawidłowym kodem HTML – Hazza
Nie, ponieważ dokument zostałby już załadowany. Dom ładuje się od góry do dołu. Osobiście chciałbym umieścić wszystkie moje js na dole strony zamiast w głowie.
Jednak jest to tylko 1 wiersz kodu i sugeruję używanie go tylko po to, aby być bezpiecznym. również możesz sprawić, że będzie jeszcze krótszy. $(function() {}
jest taki sam jak $(document).ready(function(){})
Nie rozumiem, dlaczego powinieneś go używać, aby być bezpiecznym; wydaje się, że niepotrzebnie spowolniłoby to egzekucję. –
, ponieważ zawsze znajdzie się ktoś, kto ma jakąś konfigurację przeglądarki, która nie powiedzie się, jeśli nie zobaczy tego, czego chce lub czego oczekuje. Uruchomienie '$ (function() {}' raz nie zwalnia rzeczy na tyle, że możesz się tym przejmować, spójrz na http://stackoverflow.com/questions/8160014/document-ready-check-slows-down-ie i przeczytaj komentarze do zaakceptowanej odpowiedzi, użycie '$ (function() {}' zajmie średnio około 2-3ms) na marginesie, jeśli używasz php, możesz utworzyć funkcję lub klasę, aby umieścić wszystkie js w 1 pliku in 1 '$ (function() {}' lub możesz to zrobić w js do. spójrz na schematy projektowe. – Yamiko
"Technicznie", tak - "praktycznie", nie. Jest to zgodne (nieokreślone) zachowanie dla przeglądarek przez lata. Wierzę jednak, że może istnieć jakaś magia z 'ready' i ramkami w IE ... skrypt powinien nadal być * wewnątrz * znacznikiem ciała. –
Czy też "stopka" oznacza '
Na końcu '
' –