.trigger(“更改”)无效.on(“更改”)

时间:2017-07-07 16:12:12

标签: jquery

我使用了.on("change")事件函数,因为我的整个代码中有一部分是动态变化的。 .trigger("change").change()中正常工作,但在.on("change")上则无效。这是我的代码:

    $('#popupContent').on('change', '#gradeYearLevel', function() {
        var $course = $('#course');
        var $section = $('#section');

        if ($(this).val() > 4) {
            $type = 0;
        }
        else {
            $type = 1;
        }
        if ($('#gradeYearLevel').val() == '') {
            $course.empty().append($("<option>", {"value": ""}).html("-- Select --"));
            $section.empty().append($("<option>", {"value": ""}).html("-- Select --"));
        }
        else {
            $.getJSON(BASE_PATH + "getJSONCoursesByType/" + $type, function(data) {
                $course.empty().append($("<option>", {"value": ""}).html("-- Select --"));
                $.each(data, function(k,v){
                    $course.append(
                        $("<option>", {"value": v.id}).html(v.title)
                    );
                });
            });
            $.getJSON(BASE_PATH + "getJSONSectionsByType/" + $type, function(data) {
                $section.empty().append($("<option>", {"value": ""}).html("-- Select --"));
                $.each(data, function(k,v){
                    $section.append(
                        $("<option>", {"value": v.id}).html(v.name)
                    );
                });
            });
        }
    }).trigger("change");

1 个答案:

答案 0 :(得分:1)

问题是因为您触发了从change而不是 #popupContent返回的on()元素上的#gradeYearLevel事件委托事件处理程序正在侦听。

您需要在子元素上调用trigger(),以便事件可以冒泡。试试这个:

$('#popupContent').on('change', '#gradeYearLevel', function() {
    // your code here...
})

$('#gradeYearLevel').trigger("change");