如果您的事件处理程序不执行异步调用,则触发的事件将执行并完成,然后才会转到下一行。提琴手
$('#productFamilyId').val(data.contents.productfamily);
$('#productFamilyId').trigger('change');
// Execute after change complete
$('#productId').val(data.contents.product);
$('#productId').trigger('change');
通过事件处理程序中的异步调用(setTimeOut、Ajax 等),您可以执行以下操作:JsFiddle
在事件处理程序中添加回调函数作为参数:
$("#productFamilyId").change(function(e, callback) {
// Simulating ajax
setTimeout(function() {
if (typeof callback === "function")
callback();
}, 3000);
});
并像这样触发:
$('#productFamilyId').trigger('change', function() {
$('#productId').val(data.contents.product);
$('#productId').trigger('change');
});