Pytanie:
Co się stanie, jeśli połączę dwa pliki JavaScript, oba z $(document).ready
funkcjami? Czy jedno zastępuje drugie? Czy oboje $(document).ready
zostaną wezwani?
Na przykład,
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript" src="http://.../jquery1.js"></script>
<script type="text/javascript" src="http://.../jquery2.js"></script>
jquery1.js:
$(document).ready(function(){
$("#page-title").html("Document-ready was called!");
});
jquery2.js:
$(document).ready(function(){
$("#page-subtitle").html("Document-ready was called!");
});
Jestem pewien, że najlepszą praktyką jest połączenie obu połączeń w jeden, $(document).ready
ale w mojej sytuacji nie jest to całkiem możliwe.
javascript
jquery
rlb.usa
źródło
źródło
Odpowiedzi:
Wszystko zostanie wykonane i na podstawie pierwszego uruchomienia pierwszego uruchomienia !!
Demo Jak widać, nie zastępują się one nawzajem
Chciałbym też wspomnieć o jednej rzeczy
zamiast tego
możesz użyć tego skrótu
źródło
jQuery(document).ready(function(){ });
Ważne jest, aby pamiętać, że każde
jQuery()
połączenie musi faktycznie wrócić. Jeśli zostanie zgłoszony wyjątek w jednym, kolejne (niepowiązane) wywołania nigdy nie zostaną wykonane.Dotyczy to niezależnie od składni. Można użyć
jQuery()
,jQuery(function() {})
,$(document).ready()
, cokolwiek chcesz, zachowanie jest takie samo. Jeśli wczesny nie powiedzie się, kolejne bloki nigdy nie zostaną uruchomione.Był to dla mnie problem podczas korzystania z bibliotek innych firm. Jedna biblioteka zgłaszała wyjątek, a kolejne biblioteki nigdy niczego nie inicjowały.
źródło
$(document).ready
wywołań zgłosiło błąd i dlatego$(document).ready
nigdy nie została wywołana inna funkcja. Doprowadzało mnie to do szału.$ (dokument) .ready (); jest taki sam jak każda inna funkcja. uruchamia się, gdy dokument jest gotowy - tzn. załadowany. pytanie dotyczy tego, co się stanie, gdy wiele $ (dokument) .ready () zostanie uruchomionych, a nie gdy uruchomisz tę samą funkcję w wielu $ (dokument) .ready ()
oba będą zachowywać się dokładnie tak samo. jedyną różnicą jest to, że chociaż te pierwsze osiągną takie same wyniki. ten ostatni będzie działał o ułamek sekundy szybciej i wymaga mniej pisania. :)
podsumowując, tam gdzie to możliwe, używaj tylko 1 $ (dokument) .ready ();
// stara odpowiedź
Obaj zostaną wezwani w kolejności. Najlepszą praktyką byłoby ich połączenie. ale nie martw się, jeśli nie jest to możliwe. strona nie wybuchnie.
źródło
Wykonanie odbywa się z góry na dół. Kto pierwszy ten lepszy.
Jeśli kolejność wykonywania jest ważna, połącz je.
źródło
Oba zostaną wezwane, kto pierwszy, ten lepszy. Spójrz tutaj .
Wynik:
źródło
Aby nie nićść wątku, ale w najnowszej wersji
jQuery
sugerowanej składni jest:Tak wyglądałoby użycie anonimowej funkcji
Zobacz ten link:
https://api.jquery.com/ready/
źródło