Тема: Select'ы + AJAX
Показать сообщение отдельно
  #3 (permalink)  
Старый 18.03.2009, 08:56
Новичок на форуме
Отправить личное сообщение для Werewolf Посмотреть профиль Найти все сообщения от Werewolf
 
Регистрация: 17.03.2009
Сообщений: 2

Сразу говорю, у меня select'ы уже присутствуют на странице.
selectors = new Array('ctlArtist','ctlAlbum','ctlSong');
var generateList = function(j) {
	var options = '';
	for (var i = 0; i < j.options.length; i++) {
		options += '<option value="' + j.options[i].optionValue + '">' + j.options[i].optionDisplay + '</option>';
	}
	$("select#"+selectors[j.level]).html(options);
	console.log(1+"\n"+$("select#"+selectors[j.level]).html());
}
$(document).ready(function(){
	$("select#ctlArtist").change(function(){
		$.getJSON("select.php",{id: $(this).val(), level: 1}, generateList);
		console.log(2+"\n"+$("select#ctlAlbum").html());
	});
});

В консоли Firebug'а показывает вначале данные вторым console.log и только затем из первого. Получается функция-обработчик выполняется асинхронно и запаздывает.

Я нашел решение с использованием setTimeout:
setTimeout('$("select#ctlAlbum").trigger("change")', 1);

В этом случае вначале выполнится обработчик, и только затем сработает триггер.
Ответить с цитированием