首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery $.when for不适用于ajax加载的内容

jQuery $.when for不适用于ajax加载的内容
EN

Stack Overflow用户
提问于 2013-11-28 11:38:45
回答 2查看 666关注 0票数 0

我有一个选择框,它的内容和它本身都会被ajax更改。我想用ajax更改内容,加载后,我希望将选定的选项更改为"test_type“。当我用ajax获取数据并使用新的选择框更改#type_select_div的内容时,它会被加载,我可以看到选项,但是jquery不能更改所选选项。(您将在下面看到test2 ),但是如果我给出内容(与ajax响应完全相同),而不是使用ajax,它将完美地工作。(您将在下面看到test1 )

我找不到我做错了什么。

HTML部件:

代码语言:javascript
运行
复制
<div id="type_select_div">
<select id="formElementTypeName" name="formElementTypeName" class="form-control ">
</select>
</div>
<button onclick="loadAndChange()">load and change</button>

javascript部分:

代码语言:javascript
运行
复制
function loadTypes(){
/* test1: works */
var msg='<select class="form-control" name="formElementTypeName" id="formElementTypeName">'
+'<option value="type1">type1</option>'
+'<option value="test_type">test_type</option>'
+'</select>';
$('#type_select_div').html(msg);
/* end of test1*/

/* test2: doesn't work */
$.ajax({
    type: "POST",
    url: "ajax_actions.php",
    success: function(msg){
        $('#type_select_div').html(msg);
    }
});
/* end of test2 */
}

function loadAndChange(){
  $.when(loadTypes()).done(function () {
    $('select[name="formElementTypeName"]').find('option[value="test_type"]').attr("selected",true)
  });
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-28 11:42:58

您需要从Deferred返回loadTypes()

代码语言:javascript
运行
复制
function loadTypes(){
    var msg='<select class="form-control" name="formElementTypeName" id="formElementTypeName">'
        +'<option value="type1">type1</option>'
        +'<option value="test_type">test_type</option>'
        +'</select>';
    $('#type_select_div').html(msg);

    return $.ajax({
        type: "POST",
        url: "ajax_actions.php",
        success: function(msg){
            $('#type_select_div').html(msg);
        }
    });
}
票数 2
EN

Stack Overflow用户

发布于 2013-11-28 11:43:02

您需要将$.ajax调用的结果返回给您的方法,以便jQuery知道这是一个承诺:

代码语言:javascript
运行
复制
function loadTypes(){
    return $.ajax({
        type: "POST",
        url: "ajax_actions.php",
        success: function(msg){
            $('#type_select_div').html(msg);
        }
    });
}

function loadAndChange(){
  $.when(loadTypes()).done(function () {
        $('select[name="formElementTypeName"]').find('option[value="test_type"]').attr("selected",true)
  });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20265205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档