gpt4 book ai didi

javascript - jQuery.trigger() 函数后的回调

转载 作者:数据小太阳 更新时间:2023-10-29 05:01:29 25 4
gpt4 key购买 nike

我这里有个小问题。我必须触发一个包含 $.post() 的事件来加载表单并将其分配给 DOM。完成后,我编辑了表单的字段。

我试过:

$.when(function(){
$('#type_rank_field').trigger('change'); //calls the $.post() to load the form
})
.done(function(){
$('#quest_'+questions[i].split('|')[1]).children('option[value="'+questions[i].split('|')[0]+'"]').attr('selected',true);
});

不幸的是,这不起作用,如果我就这样离开它:

$('#type_rank_field').trigger('change');
$('#quest_'+questions[i].split('|')[1]).children('option[value="'+questions[i].split('|')[0]+'"]').attr('selected',true);

变化看起来像这样:

        $('#type_rank_field').live('change',function(){
var id = $(this).children('option:selected').attr('id');
var id_edited = get_id_from_id(id);
$.post('ajax/load_questions_of_rank.ajax.php',{id: id_edited},function(data){
//alert(data);
$('#rank_fields').html(data);
});
});

然后在正确加载表单并将其附加到 DOM 之前执行表单编辑。对于 JavaScript 人员来说,这可能是一个愚蠢的问题,但我主要是一名 PHP 人员,所以不要太残忍:-)

谢谢

最佳答案

可以分离出你的change处理程序代码吗?像这样:

$('#type_rank_field').on('change',function(){
handleChange($(this));
});

function handleChange(elem, callback) {
var id = elem.children('option:selected').attr('id');
var id_edited = get_id_from_id(id);
$.post('ajax/load_questions_of_rank.ajax.php',{id: id_edited},function(data){
//alert(data);
$('#rank_fields').html(data);
if (typeof callback === "function") {
callback(data);
}
});
};

然后您可以调用 handleChange 并传递回调以在 AJAX 调用完成时执行,而不是触发 change:

handleChange($("#type_rank_field"), function(data) {
$('#quest_'+questions[i].split('|')[1])
.children('option[value="'+questions[i].split('|')[0]+'"]')
.attr('selected',true);
});

关于javascript - jQuery.trigger() 函数后的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com