Всегда лучше загружать столько, сколько разумно при начальной загрузке. Если ваш сайт / приложение требует, чтобы вы добавляли материал динамически через AJAX, тогда я вижу вашу дилемму.
Исходя из того, что я понимаю, вы задаетесь вопросом, какой наилучшей / предпочтительной практикой было бы, чтобы ваш JavaScript был кратким и содержательным, а не разбросанным по всей вашей странице. Вы говорите, что в настоящее время ваши скрипты разбросаны по всей вашей странице, потому что, когда вы загружаете в модули / представления или что-то еще, у них есть js вместе с ними, чтобы при загрузке их скрипт запускался (многословно, простите). И проблема в том, что вы хотите, чтобы определенные события запускались (например, создание лайтбокса или сортировка таблицы), когда эти представления загружаются с использованием одного всемогущего суперглобального js-файла.
Итак, если это звучит правильно, то вот что я буду делать (для любых представлений, загружаемых динамически) ...
Итак, давайте предположим, что у вас есть код, который вы предоставили:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"z></script>
<script type="text/javascript" src="./application.js"></script>
</head>
<body>
<div id="wrapper">
<div id="sidebar"></div>
<div id="content"></div>
</div>
</body>
</html>
Если вы загрузили некоторый контент в div '#content' (скажем, таблицу), когда страница полностью загружена, а затем вы хотели отсортировать эту таблицу, не помещая скрипт для этого в HTML-код, возвращаемый из AJAX, у вас может быть следующий код в вашем основном ('./application.js') файле:
$(function() {
load_table();
$('#content #my_table').live('table_loaded',function() {
$(this).sort(); // or whatever your sorting method is...
});
});
function load_table() {
$.get('mysite.php',{foo:bar,bar:foo},function(data) {
$('#content').html(data).find('#my_table').trigger('table_loaded');
});
}
Используются пользовательские события jquery и событие live (). Я не проверял это, но теоретически это должно сработать.
ОБНОВЛЕНИЕ: Я проверил это, и он отлично работает с использованием jquery 1.3.2:)