Мой код - это модуль JS, который подключен к SPA, код которого я не могу контролировать. Этот SPA использует Backbone для динамического загрузки элементов HTML из шаблона. Один из этих элементов - это div, который мне нужен в моем коде. Я ищу его в документе JQuery готов ..Будет ли документ jQuery готов ждать, когда элементы html будут динамически введены через базовую станцию?
$(document).ready(function() {
if($("#myDivId")[0] != undefined) {
console.debug("Found it");
} else {
console.debug("D'OH!");
}
});
Иногда я нахожу, что Див и другое время я не делаю. Это заставляет меня думать, что DOM ready не всегда ждет Backbone. Можете ли вы это подтвердить?
И если это так, то есть ли какие-либо другие обработчики событий, где я могу разместить свой код, где он всегда находит динамически вставленный HTML-код Backbone?
Я думаю, что можно с уверенностью предположить, если вы не находите div иногда, он не ждет его. Я не использую магистраль, но вы можете дать .load выстрел, посмотрите, работает ли это. – Chris
Нет. Документ готов к работе при загрузке DOM, как определено в разметке. Он не ждет завершения загрузки асинхронной JS-библиотеки - ни динамических элементов JS, которые должны быть добавлены из других библиотек. Вы всегда можете написать свой собственный обратный вызов, чтобы загрузить инициализацию jQuery, как только Backbone будет делать свою работу, но это может быть проблематично, если вы пытаетесь сделать какие-либо манипуляции до загрузки динамических элементов. – Korgrue
@ Korgrue, не могли бы вы привести пример кода этого обратного вызова, который может срабатывать после того, как работает базовая линия, и если выполняется базовая линия, все динамические элементы уже должны быть загружены в этой точке? – AbuMariam