jquery检测选择完成加载

时间:2013-11-13 10:05:19

标签: jquery

你会如何处理这个问题: 我有3个选择(下拉列表),一个是人,一个是州,一个是城市列表。

选择州后,该州内的所有城市都将加载到城市列表

我的问题是当这个人被改变时,我可以用

改变选择(下拉列表)
$('#State').find('[value="' + user.State + '"]').prop('selected', true);

因为状态是预先加载的。之后我有了

$('#State').trigger('change');

加载城市列表

我的问题是如何检测从ajax加载的$('#City')?也许是这样的:

$('#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's 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);
        });
    }

1 个答案:

答案 0 :(得分:-1)

嗯,对于那些与我有同样问题的人,这就是答案:

$('document').ready(function ()
{
    $('#State').live('change', function ()
    {
        GetCityList($(this).val());
    });

    // when loading, detect query string for user's 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');
    });
}