使用.trigger时jQuery change()事件没有触发('更改')

时间:2016-09-30 07:02:55

标签: jquery

我有一些jQuery代码在更改select下拉列表时填充表单。它自己按预期工作,但我需要在页面加载时触发它。

我在选择器中包含父表,因为<select>元素是动态创建的。

正如我所说,当用户进行下拉选择时,这可以正常工作,但是下面的$.each没有触发事件,即使它迭代遍历数组并更改下拉值 - 更改事件永远不会开火。

jQuery(document).ready(function ($) {

    var _dropdownVals = [ '-1', '11', '63' ];

    $.each(_dropdownVals, function (val) {
        $('select[name="form_list_0"]').val(val).trigger('change');
    });

    $('table').on('change', 'select[name^="form_list_"]', function () {
        ... do something
    });

});

我甚至不认为.trigger()应该是必要的......

有谁能告诉我为什么变更事件可能没有被解雇?

1 个答案:

答案 0 :(得分:4)

它正在解雇,但你尚未注册事件处理程序!事件处理程序仅处理注册后触发的事件。试试这个:

$('table').on('change', 'select[name^="form_list_"]', function () {
    ... do something
});

$.each(_dropdownVals, function (val) {
    $('select[name="form_list_0"]').val(val).trigger('change');
});

顺便说一下,您需要使用trigger,因为以编程方式更改值不会自动触发事件。