Javascript 完成另一个触发器(“change”)时的JQuery触发器(“change”),其中.change包括ajax

Javascript 完成另一个触发器(“change”)时的JQuery触发器(“change”),其中.change包括ajax,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有多种方法。更改jquery方法,以便使用另一个下拉列表中的数据填充一个下拉列表;这是正确的 现在,我在显式函数中使用.trigger(“change”)自动触发这些.changes时遇到了问题。此显式函数应自动选择正确的下拉项,以便在第一个触发器的ajax完成后,下一个触发器应执行等 function populate(id, block, chapter) { $("#Chapters").val(chapter).trigger("change"); $("#Blocks

我有多种方法。更改jquery方法,以便使用另一个下拉列表中的数据填充一个下拉列表;这是正确的

现在,我在显式函数中使用.trigger(“change”)自动触发这些.changes时遇到了问题。此显式函数应自动选择正确的下拉项,以便在第一个触发器的ajax完成后,下一个触发器应执行等

function populate(id, block, chapter) {
    $("#Chapters").val(chapter).trigger("change");
    $("#Blocks").val(block).trigger("change");
    $("#IDs").val(id);
}
以下是使用ajax填充相应下拉列表的方法: (注意:我使用async:false试图缓解我的等待问题;我发现这很可能不是解决方案,解决方案可能位于上面显示的显式函数中的某个地方)

$(“#章”)。更改(
函数(){
var selectedVal=$(this.val();
$.ajax(“/Library/getblocksbychapper”{
async:false,
数据:{“chapterId”:selectedVal},
类型:“POST”,
成功:
功能(数据){
$(“#块”).empty().append(“--选择块--”);
$(“#IDs”).empty().append(“--请先选择一个块--”);
$.each(数据、函数(索引、值){
$(“#块”).append(“+value[“name”]+”);
}
);
}
});
}
);

$(“#块”)。更改(
函数(){
var selectedVal=$(this.val();
$.ajax(“/Library/GetIDsByBlock”{
async:false,
数据:{“blockId”:selectedVal},
类型:“POST”,
成功:
功能(数据){
$(“#IDs”).empty();
$.each(数据、函数(索引、值){
$(“#id”).append(“+value[“name”]+”);
}
);
}
});
}
);

让事情更清楚一点:我有3个下拉列表,第一个填充第二个,等等。 我在页面上有几个按钮调用方法populate(id、block、chapter),以便自动选择下拉列表;其中id、block、chapter是通过ajax在下拉列表中填充的值


如果您有任何帮助/建议,我们将不胜感激:)

看起来您正试图手动触发对选项(或某物?)的更改,而不是选择。我想您可能只需要更改为`$(“#块”)。触发器(“更改”)`除非我读错了。很抱歉,我从来没有包含html,但我触发了对select标记的更改#Blocks#Chapters和#id都是select标记right,但通过调用$(“#Blocks”).val()实际上是调用jQuery包装的select标记的一个方法,该标记返回所选选项。这意味着,当您将方法调用链接到trigger()时,它将在选项而不是选择标记上运行。@brianvaughn Cool,learning new things:)尽管我可以确认第一个,
$(“#Chapters”).val(chapter).trigger(“change”)正在工作。我明白了。也许我误读了。如果你有机会抛出一个plunker,我也许可以看看HTMl。
    $('#Chapters').change(
    function () {
        var selectedVal = $(this).val();
        $.ajax("/Library/GetBlocksByChapter", {
            async: false,
            data: { "chapterId": selectedVal },
            type: "POST",
            success:
            function (data) {
                $("#Blocks").empty().append("<option value='0'>--Select a Block--</option>");
                $("#IDs").empty().append("<option value='0'>--Please Select a Block First--</option>");
                $.each(data, function (index, value) {
                    $("#Blocks").append("<option class='form-control' value='" + value["dbid"] + "'>" + value["name"] + "</option>");
                }
                );
            }
        });
    }
        );
    $('#Blocks').change(
function () {
    var selectedVal = $(this).val();
    $.ajax("/Library/GetIDsByBlock", {
        async: false,
        data: { "blockId": selectedVal },
        type: "POST",
        success:
        function (data) {
            $("#IDs").empty();
            $.each(data, function (index, value) {
                $("#IDs").append("<option class='form-control' value='" + value["dbid"] + "'>" + value["name"] + "</option>");
            }
            );
        }
    });
}
    );