2012-08-31 3 views
4

Недавно открытая библиотека head.js и мальчик, я доволен ею, хотя я все еще немного запутался в одной вещи.

От headjs.com:

«DOM готова» такое событие, как $ (документ) .ready() уже уволен, когда скрипты прибывают. Если загруженные сценарии зависят от этого события, убедитесь, что ваша библиотека может справиться с этим. Работает jQuery 1.4+.

С учетом этого, как лучше всего настроить страницу, использующую jQuery, если код внутри $ (document) .ready() зависит от внешних скриптов, загруженных с помощью head.js?

Можем ли мы просто потерять вызов $ (document) .ready() и все еще успешно настроить такие функции, как прослушиватели событий, которые полагаются на документ, готовый? Пример:

head.js("script1.js", "script2.js", "script3.js", function() { 
    $('#button').click(function(event) { 
     alert("clicked"); 
    }); 
}); 

Или мы хотим обернуть $ (document) .ready() внутри функции?

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

ответ

4

В любом случае это нормально. Обработчики, переданные в ready(), вызываются немедленно, если DOM уже полностью инициализирован.

Для увеличения производительности в небольшой, вы можете удалить ready обработчик и включать в свой код непосредственно, если вы не полагаться на побочный эффект, как $ объект JQuery в настоящее время передается в обработчик.

+0

так что head.ready() ждет выполнения после того, как DOM готов, как $ (document) .ready(), или он просто выполняется после загрузки скриптов? – dougmacklin

+1

@ Dougie, как говорится в цитированных вами документах, «событие« DOM ready », такое как $ (document) .ready(), уже запущено при поступлении сценариев». Поэтому 'head.js()' ведет себя точно так же, как 'ready()' в этом контексте. (Я подозреваю, что 'head.js()' ждет, когда DOM будет готов, прежде чем вводить скрипты.) –

+0

, так что вы говорите, что ответ был прямо под моим носом? ;) – dougmacklin

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