Задать вопрос
@mr-zherart

Как дождаться полного обновления DOM после ajax запроса?

Здравствуйте. Ситуация такая. По ajax запросу из БД достается лист input-ов и заносится в цикле с параметрами в какой-нибудь div. Дальше задача стоит так, чтобы с помощью jquery добавить в input-ы разные значения val.

Проблема в следующем jquery исполняет запрос на выборку ajax, а потом (DOM еще не успел полностью занестись на страницу) ищет по селекторам input-ы чтобы вставить в них значения, естественно не находит и вставляет ничего.

Как сделать так, чтобы только после добавления элементов в дерево jquery начал искать их по селекторам?
  • Вопрос задан
  • 3950 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Верный ответ уже дал @yernende, только лишь добавлю, что если нужно получить размер добавленного контента, одного лишь построения DOM мало. Для перерисовки (redraw) также требуется время, поэтому после добавления контента требуется отложенное исполнение кода с нулевой задержкой (чтобы встать в event loop после redraw). И следует помнить про контекст выполнения.

$.ajax({
	url: '...',
	success: function(response) {
		//Вставка элементов на страницу.
		//Поиск и обработка.
		setTimeout(function () {
			//Размеры точно готовы.
			//Помним про this и пользуемся замыканием.
		}, 0);
	},
});
Ответ написан
Комментировать
@yernende
Очевидно, нужно искать инпуты лишь после того, как они были вставлены.
$.ajax({
  url: "some_script.php",
  success: function(response) {
    //Вставка элементов на страницу.
    //Поиск и обработка.
  },
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы