То, что jQuery.ready()
выполняется, не означает, что страница видна конечному пользователю.Это поведение, определяемое браузерами, и в настоящее время есть два события, которые следует учитывать здесь, поскольку mootools выражает это DomReady
против Load
.Когда jQuery выполняет метод ready
, он говорит о загрузке dom, однако это не означает, что страница готова для просмотра пользователем, внешние элементы, которые, как изображения, и даже таблицы стилей и т. Д., Все еще могут загружаться.
Любая привязка, которую вы делаете, даже крайне неэффективная, будет связываться намного быстрее, чем все внешние ресурсы, загружаемые браузером, поэтому пользователь IMHO не должен испытывать разницы между отображаемой страницей и доступными функциями.
Как найти привязку к элементам в вашей DOM.Вы действительно просто боитесь, что все потеряно.Это на самом деле не было моим реальным опытом, чаще всего в вашем JS вы можете проверить, на какой странице вы находитесь, и добавить только javascript для этой страницы (как упомянул Aadit выше).После этого операция быстрого поиска в вашем редакторе должна помочь вам найти что-либо, если что-то потеряно.
Имейте в виду, что при истинном MVC функциональность должна быть отделена от уровня представления.Это именно то, о чем OO javascript или ненавязчивый javascript.Вы должны быть в состоянии изменить DOM, не нарушая функциональность страницы.Да, если вы измените класс css и / или идентификатор элемента, с которым вы связываете, ваш JS сломается, однако пользователь не будет об этом знать, и страница, по крайней мере, будет работать.Однако, если это большая проблема, вы можете использовать OO-Javascript и поставить div
или span
в качестве заполнителей в вашем dom и использовать их в качестве маркеров для вставки функциональности или сказать, что она существует, вы можете даже использоватьHTML комментарии.Тем не менее, по моему опыту, вы знаете поведение своего сайта и, следовательно, всегда будете знать, что там есть какой-то JS.
Хотя я понимаю большинство ваших опасений по поводу бесполезных обходов, я думаю, что вы никуда не годитесь 'в этот момент, если вас беспокоит 1 дополнительный обход. До IE8 раньше был случай, когда обход с именем тега и идентификатором проходил намного быстрее, чем мой селектор, но это уже не так, потому что браузеры, работающие на самом деле, развивались намного быстрее при использовании только селекторов :
$("a#myLink")
- самый медленный.
$("a.myLink")
- быстрее.
$("#Link")
- самый быстрый.
$(".myLink")
- самый быстрый.
В ссылке ниже вы можете увидеть, что до 34 тысяч операций в секундувыполняются, поэтому я сомневаюсь, что скорость - это проблема.
Вы можете использовать firebug для проверки скорости каждого из них в случае очень большого размера.
В заключение:
a) Не беспокойтесь о потере js-кода, всегда есть ctrl+f
b) Нет задержки, потому что dom ready не означает, что страница видна с начала.
Обновление Фиксированный порядок скорости в операциях, основанный на результатах испытаний здесь Однако имейте в виду, что производительность IE <8 действительно имеют место, если вы не указали контейнер (раньше это было правилом, теперь, похоже, это исключение из правила). </p>