Как бы вы подошли к этому вопросу: у меня есть 3 варианта (выпадающий), один - это человек, один - государство, один - список городов.
Когда выбрано государство, весь город в этом состоянии будет загружен в список городов
Моя проблема, когда человек изменен, я могу изменить выбор (выпадающий список) с помощью
$('#State').find('[value="' + user.State + '"]').prop('selected', true);
поскольку состояние предварительно загружено. после этого я
$('#State').trigger('change');
загрузить список городов
Мой вопрос заключается в том, как определить законченную загрузку $ ('# City') из ajax? Может быть, что-то вроде этого:
$('#City').on('load', function(){
$('#City').find('[value="' + user.City+ '"]').prop('selected', true);
});
но я думаю, что я делаю что-то неправильно...
Есть рекомендации? благодарю!
Здесь полный код:
$('document').ready(function ()
{
$('#State').live('change', function ()
{
GetCityList($(this).val());
});
// when loading, detect query string for user name
var user = GetUserInfo();
if (user.Name != '')
{
$('#State').find('[value="' + user.State + '"]').prop('selected', true);
}
$('#State').trigger('change');
// this line will not work because City has not finished loading
$('#City').find('[value="' + user.City + '"]').prop('selected', true);
});
function GetCityList(State)
{
$.getJSON('/Handler.ashx?State=' + State, function (data)
{
var html = '';
// process data to produce html
$('#CityList').html(html);
});
}
хорошо, для тех, у кого такая же проблема со мной, это ответ:
$('document').ready(function ()
{
$('#State').live('change', function ()
{
GetCityList($(this).val());
});
// when loading, detect query string for user name
var user = GetUserInfo();
if (user.Name != '')
{
$('#State').find('[value="' + user.State + '"]').prop('selected', true);
}
$('#State').trigger('change');
// this listens to the custom event that you specified
$('#CityList').on('loaded123',function()
{
$(this).find('[value="' + user.City + '"]').prop('selected', true);
});
});
function GetCityList(State)
{
$.getJSON('/Handler.ashx?State=' + State, function (data)
{
var html = '';
// process data to produce html
$('#CityList').html(html);
// trigger a custom event, any name you want
$('#CityList').trigger('loaded123');
});
}
.done()
чтобы выполнить все, что вы хотите, когда загрузка будет завершена. Кроме того, зачем искать выбранный элемент в городе выберите сразу после его загрузки? Вы не ждете, когда пользователь выберет город?