Обычно я использую domReady()
функции (либо jQuery, либо созданные вручную), когда хочу выполнить какой-то код после того, как я уверен, что DOM страницы полностью загружен (99% случаев - это код инициализации).
Теперь мне нужно добавить некоторый HTML-шаблон внутри элемента DIV, но после этого мне нужно получить некоторые элементы, которые были добавлены к нему, и манипулировать ими (изменить тексты, прикрепить события, установить сообщения проверки и маски и т. д.).
div.innerHTML += htmlTemplate; // Template which has the "someInput" input
var someInput = document.getElementById('someInput');
Дело в том, можно ли предположить, что input
был загружен в DOM? После того, как я добавлю HTML в DIV, нужно ли отправлять код, основанный на новых элементах DOM, в качестве обратного вызова функции domReady
?
div.innerHTML += htmlTemplate;
domReady(function(){
var someInput = document.getElementById('someInput');
// ...
});
С технической точки зрения... Каждый раз, когда к элементам добавляется простой HTML, DOM переходит в состояние загрузки< /а>?
-- РЕДАКТИРОВАТЬ
Вот функция domReady(), которую я использую:
function domReady(f) {
/in/.test(document.readyState) ? setTimeout('domReady('+f+')', 9) : f();
}
PS: мне нужна была простая/короткая/независимая от API функция, поэтому я наткнулся на нее некоторое время назад в SE.
Заранее спасибо.
innerHTML += more_stuff;
) заставляет браузер повторно анализировать все содержимое затронутого контейнера. Это не самая эффективная вещь. - person Pointy   schedule 06.12.2013