使用.trigger(';change';)时未触发jQuery change()事件

使用.trigger(';change';)时未触发jQuery change()事件,jquery,Jquery,我有一些jQuery代码,它在select下拉列表值更改时填充表单。就其本身而言,它可以按预期工作,但我需要在加载页面时触发它 我将父表包括在选择器中,因为元素是动态创建的 正如我所说的,当用户进行下拉选择时,这是可以预期的,但是下面的$。每个都不会触发事件,即使它确实遍历数组并更改下拉值-更改事件永远不会触发 jQuery(document).ready(function ($) { var _dropdownVals = [ '-1', '11', '63' ]; $.e

我有一些jQuery代码,它在
select
下拉列表值更改时填充表单。就其本身而言,它可以按预期工作,但我需要在加载页面时触发它

我将父表包括在选择器中,因为
元素是动态创建的

正如我所说的,当用户进行下拉选择时,这是可以预期的,但是下面的
$。每个
都不会触发事件,即使它确实遍历数组并更改下拉值-更改事件永远不会触发

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()


有人能告诉我为什么更改事件可能没有触发吗?

它正在触发,但您尚未注册事件处理程序!事件处理程序仅处理注册后触发的事件。请尝试以下方法:

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

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

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

它正在触发,但您尚未注册事件处理程序!事件处理程序仅处理注册后触发的事件。请尝试以下方法:

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

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

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

在分配“更改”事件之前,您正在触发它。@AlanJurczak是的,我是。这解决了问题。您在分配“更改”事件之前正在触发它。@AlanJurczak是的,我是。这解决了问题。这完美地解决了问题。我刚刚学到了一些东西。谢谢。这很好地解决了这个问题。我刚刚学到了一些东西。谢谢