$(document).ready(handler)
выполняется после полной загрузки DOM. Если содержимое позже добавляется на страницу с помощью AJAX, которая содержит функцию $(document).ready(handler)
, эта функция выполняется немедленно, в соответствии с jQuery API . Кроме того, .ready
можно вызывать только для объекта jQuery, соответствующего текущему документу.
Это не то, что я хочу, однако:)
Как я могу достичь этого .ready
типа функциональности для данных, загружаемых через AJAX после того, как .ready
уже запущен, кросс-браузерно-совместимым способом?
EDIT:
Вот очень упрощенный пример. У меня есть проблема, которую я пытаюсь решить, но мне больше интересно понять, как сделать это правильно.
По сути, функция .ready в ajaxPage.html срабатывает до полной загрузки важныйDependency.js, поэтому первая загрузка ajaxPage важныйDependency отсутствует, но последующие загрузки видят это.
index.html
...
<script type="text/javascript">
$(document).ready(function() {
alert("The document is ready");
$('#myButton').click(function() {
$('<div></div>').dialog({
open: function () {
$(this).load('ajaxPage.html');
}
});
});
});
</script>
...
ajaxPage.html
...
<script type="text/javascript" src="importantDependency.js"></script>
<script type="text/javascript">
$(document).ready() {
$('#thing').leverageImportantDependency();
});
</script>
...
РЕДАКТИРОВАТЬ 2:
Я хочу сделать это ИЗ загруженного контента, а не со страницы, вызывающей контент. Изменение вызывающей страницы означает дублирование кода в каждом экземпляре, где он вызывается. Мне бы хотелось, чтобы поведение было привязано к контенту, а не к странице, вызывающей его.