Показать сообщение отдельно
  #2 (permalink)  
Старый 10.07.2013, 10:50
Интересующийся
Отправить личное сообщение для apollox Посмотреть профиль Найти все сообщения от apollox
 
Регистрация: 16.10.2012
Сообщений: 14

Попробую конкретнее, и упростить )
Есть два списка:
<select id="region">
<option value="1" Selected>Россия
<option value="2">Украина
....
<option value="10">Кахастан
</select>

<select id="currency">
</select>


Задача:
при загрузке страницы сразу вывести в id="currency" для выбранного региона (пусть Россия) перечень валют в option - usd и rub (для Украины это будет usd и grivna, для Казахстана - usd и tenge, и так далее)

Код:
$(document).ready(function () {
    $('#currency').attr('disabled', true);
    $('#currency').html('<option>загрузка...</option>');
    $.get(
        'link.php', //куда отправляем запрос
        'region=' + $('#region :selected').val(), //отправляемые данные - id выбранного региона
        function() { //здесь не разбираю пришедшие данные, а для упрощения пишу что должно добавляться в option для России
            var options = '';
            options += '<option value="usd">USD</option>';
			options += '<option value="rub">RUB</option>';
            $('#currency').html(options);
            $('#currency').attr('disabled', false);
        },
        "json"
    );		
	
	$('#currency option').each(function (){ //пытаемся вывести значения <select id="currency">
	 	alert(this.value);
	});
});


Проблема:
На странице все выглядит корректно, в <select id="currency"> мы видим usd и rub, но при попытке обратиться к этому селекту:
$('#currency option').each(function (){ //пытаемся вывести значения <select id="currency">
	 	alert(this.value);
	});

получаем в alert - "загрузка..." вместо последовательных usd и rub
Но если добавить перед этим алертом еще любой алерт, то все выводится правильно:
alert('qqq');
$('#currency option').each(function (){ //пытаемся вывести значения <select id="currency">
	 	alert(this.value);
	});

Получаем последовательно, вместо "загрузка..." - qqq, usd, rub.

Не понимаю, почему сразу после выполнения кода, без алертов, не могу получить значения <select id="currency">?
То есть выводится
$('#currency').html('<option>загрузка...</option>');
вместо того, что на самом деле уже сидит в <select id="currency">
Ответить с цитированием