В основном, что делает при запуске кода при загрузке тела
Позвольте мне объяснить немного подробнее.
Когда страница загружается, браузер загружается с первой строки до последней строки. Когда вы загружаете jQuery в ваш тег <head>
, он загружается до <body>
, так как <head>
находится над телом
Возьмите этот пример:
<!DOCTYPE html>
<html>
<head>
<script type="x" source="jquery.js" />
<script type="x">
$("#my_id").remove();
</script>
</head>
<body>
<div id="my_id"></div>
</body>
</html>
Как вы можете видеть, первый загруженный ресурс - jquery.js
, и строка ниже, где у меня есть код jQuery, будет lexecute, потому что jquery был загружен, поэтому $()
существует.
проблема в том, что код jquery ищет несуществующее, потому что DOM еще не проанализировал его.
используется следующий синтаксис, чтобы при отправке «анонимной функции» в jquery она сохранялась до полной загрузки документа, поэтому <div>
будет существовать и команда будет выполнена успешно.
$(function(){
})
есть несколько способов написать это, основной способ выглядит так:
$(document).ready(function(){
//Code here will only be run upon document ready.
});
Но я предпочитаю делать что-то:
mysite = {}; //Creates a "namespace / Object" for me to work within
mysite.dialog = function(title,message){/*blah*/}
mysite.init = function(){
//Code here is for the Document Ready state.
mysite.dialog("hey","the document has been loaded");
}
А потом я сохраняю это в моем Application.js
файле и включаю после jquery.js
затем в моем документе выполните следующую команду.
$(document).ready(mysite.init);