2010-12-01 6 views
2

Создайте новый файл jQuery и ищите информацию о том, как сохранить весь мой скрипт в одном внешнем файле и не иметь его вложенности в document.ready() ;. Я надеюсь, что вы сможете называть определенные функции только на определенных страницах, а остальные - обрабатывать с помощью ready() ;. Я не уверен на 100%, что лучше всего назвать функцию со страницы:/ Спасибо.Вызов внешних функций jQuery без document.ready();

+0

Я не уверен, что вы имеете в виду. Когда DOM готов, вы можете делать что угодно. А также? – karim79 2010-12-01 01:24:00

ответ

2

Нет ничего плохого в том, что у вас есть несколько документов.readys

Мне нравится добавлять уникальный идентификатор на каждую страницу и проверять javascript, что идентификатор существует до его выполнения. Вы можете создать простую функцию-оболочку, которая выполняет проверку и ожидает document.ready:

var pageReady = function (id, callback) { 
    $(function() { 
     if ($(id).length) { 
     callback(); 
     } 
    }); 
}; 

Затем, похожий на document.ready, вы можете иметь:

pageReady("#home-page", function() { 
    // Code will only run for home page here 
}); 

pageReady("#search-page", function() { 
    // Code will only run for search page here 
}); 

Только не забудьте добавить идентификаторы ...

<body id="home-page"> 
0

Вы можете использовать несколько файлов readty.

Один из моих любимых способов, чтобы определить, должен ли я запустить код на странице, чтобы дать организму класс uniquie, а затем использовать это ...

if ($('body').hasClass('contact')) { 
    // Validate form, etc 
} 
0

Хотя JavaScript предоставляет событие нагрузки для выполнение кода при визуализации страницы, это событие не запускается до тех пор, пока все активы, такие как изображения, не будут полностью получены. В большинстве случаев сценарий можно запустить, как только иерархия DOM будет полностью построена. Обработчик, переданный в .ready(), должен быть выполнен после того, как DOM готов, поэтому это обычно лучшее место для присоединения всех других обработчиков событий и запуска другого кода jQuery. При использовании сценариев, основанных на значении свойств стиля CSS, важно ссылаться на внешние таблицы стилей или внедрять элементы стиля перед ссылкой на сценарии.

http://api.jquery.com/ready/

0

В вашем внешнем файле вы можете иметь $(document).ready(function() { //code here; }); Кроме того, вы можете иметь все ваши функции во внешнем файле, а затем просто на вашей странице есть

$(document).ready(function() { myfunction(); }); 
+0

Aww, спасибо за редактирование – Prescott 2010-12-01 01:52:19

2

Вы можете сохранить все ваши скрипты в одном файле, если хотите. Вы можете иметь свои простые JS-функции в файле, а не внутри функции document.ready(), если вам не нужно манипулировать или взаимодействовать с DOM. Затем вы можете поместить все ваши DOM-манипуляции и взаимодействие JS внутри функции document.ready(). Вы также можете поместить JS в функцию $ (window) .load() для запуска кода, как только весь ресурс загрузится на страницу, включая изображения.

Пример:

$(window).load(function() { 
    // code that will run once all resources and the DOM are loaded into the browser 
    console.log("window loaded"); 
}); 

runOnScriptLoad(); 
function runOnScriptLoad() { 
    // code that will run as soon as the JS file loads 
    console.log("script loaded"); 
} 

$(document).ready(function() { 
    // code that will run once the entire DOM is loaded into the browser 
    console.log("DOM ready"); 
}); 

$(window).load(function() { 
    // code that will run once all resources and the DOM are loaded into the browser 
    console.log("window loaded"); 
}); 

Пример страницы: =>http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-dom-ready.html

Попросите поджигатель консоль открыта при загрузке страницы, и вы увидите, порядок, в котором каждый получает выполненный в.

+0

+1, мне нравится использовать `$ (окно).load() ` – Alex 2010-12-01 02:05:19

+0

@Alex почему? Есть только конкретные ситуации, когда это полезно, поскольку оно медленнее, чем готовый документ. – 2010-12-01 04:11:03

Смежные вопросы