Это хороший вопрос, и это то, с чем моя команда боролась, когда был выпущен JQuery. Один из коллег написал базовый класс страницы, который объединил все готовые документы в один, но это была полная трата времени и деньги нашего клиента.
Нет необходимости комбинировать вызовы $ (document) .ready() в одном, поскольку они все будут вызваны, один за другим в том порядке, в котором они отображаются на странице. это связано с многоликой делегатской природой метода, и это не окажет существенного влияния на производительность. Вы можете найти свою страницу немного более ремонтопригодной, но ремонтопригодность редко возникает с jQuery, поскольку она имеет такой краткий синтаксис.
Не могли бы вы рассказать о причинах их объединения? Я нахожу, что многие разработчики являются перфекционистами и хотят, чтобы их разметка была абсолютно идеальной. Скорее, я считаю, что, когда он достаточно хорош для клиента, когда он работает адекватно и правильно отображает, мое время лучше потрачено на выполнение следующего требования. Я потратил много времени на форматирование HTML, о котором никто никогда не будет смотреть.
Любой скрипт, который вы хотите отобразить в нижней части страницы, должен идти внутри метода ClientScriptManager.RegisterStartupScript, поскольку он отображается внизу страницы.
http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx
Редактировать Просто заметил, что ваш вопрос конкретно для ASP.NET MVC. Мой ответ - скорее ответ ASP.NET, но с точки зрения рендеринга html, большинство моих комментариев по-прежнему актуальны. Несколько функций document.ready не являются проблемой.
Стандартный подход jQuery - это написать один скрипт, который добавит поведение к нескольким элементам.Таким образом, добавить класс дивы, которые вы хотите содержать сетку и вызвать функцию на каждых из них:
<script language="text/javascript">
$(document).ready(function(){
$('.myGridClass').each(function(){
$(this).jqGrid({
// config params can be determined from
//attributes added to the div element
var url = $(this).attr("data-url");
});
});
}
</script>
Вам нужно только добавить этот скрипт один раз на странице и в вашем частичном виде вы просто:
<div class="myGridClass" data-url="http://whatever-url-to-be-used"></div>
Обратите внимание на атрибут url. Это синтаксис HTML5, который не сможет проверить HTML 4. Он по-прежнему будет работать в браузерах HTML 4. Это имеет значение только в том случае, если вам нужно запускать страницы через html-валидаторы. И я могу видеть вас already know about HTML5
В чем проблема, связанная с текущей реализацией? Вы видите увеличение производительности при группировке вызовов на .jqGrid() в одной функции $ (document) .ready() в нижней части страницы? – jessegavin
Не будет заметного увеличения производительности, пока вы не начнете иметь сотни этих вызовов на странице. Прежде чем вы дойдете до этого момента, вы уменьшите его до одного вызова jQuery, ориентированного на все элементы с помощью селектора классов и параметризованной функции для выполнения pogery jiggery. –
"повторение страницы с помощью встроенных тегов и нескольких" Jeesh. Я не думаю, что вы делаете своих клиентов и пользователей счастливее, заботясь об этом. – jfar