我有一些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()应该是必要的......
有谁能告诉我为什么变更事件可能没有被解雇?
答案 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
,因为以编程方式更改值不会自动触发事件。