如何检测jQuery触发器事件完成
How do I detect a jQuery trigger events completion?
我正试图根据第一个事件触发第二个事件,比如:
...
$('#productFamilyId').val(data.contents.productfamily);
$('#productFamilyId').trigger('change', function() {
$('#productId').val(data.contents.product);
$('#productId').trigger('change');
});
在尝试触发第二个事件之前,它不会等待第一个触发完成。是否可以等待第一个触发器完成?
也许你想要这个:
$('#productFamilyId').trigger('change', function() {
$('#productId').val(data.contents.product);
setTimeout(function(){
$('#productId').trigger('change');
},1);
});
您可以使用javascripts setTimeout()函数,这样该函数将在一段时间后执行。
$('#productFamilyId').val(data.contents.productfamily);
$('#productFamilyId').trigger('change', function() {
setTimeout( function(){
$('#productId').val(data.contents.product);
$('#productId').trigger('change');
},100);
});
如果事件处理程序没有执行异步调用,则触发的事件将执行并完成,然后将转到下一行。Js报价
$('#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');
});
触发器方法没有回调。额外的参数就是那个参数。
http://api.jquery.com/trigger/
实际要做的是在第二个函数中运行代码,然后将结果作为参数传递给触发器调用的事件处理程序。如果希望它们按顺序运行,则需要为第一个事件触发事件处理程序中的第二个事件。
相关文章:
- jQuery触发器事件在一个循环中多次出现
- 每次只在第一个上单击事件触发器
- jquery on触发器按键事件两次
- 2个Analytics帐户中的Google Analytics事件触发器跟踪
- JavaScript 触发器事件在 Android 上选择文本
- 更改多个选择选项后的jQuery触发器事件
- HTML中的触发器事件<选择>框
- 如何检测jQuery触发器事件完成
- 测试具有触发器事件的函数
- 无法从触发器事件中获取参数值
- 触发器事件,当自动完成完成密码输入时
- 如何解除绑定从外部js文件添加的触发器事件
- UpdatePanel触发器,如何设置触发器事件__doPostBack
- 有没有办法在控制台中自动输出所有backbone.js触发器/事件?
- Ajax生成的元素上的触发器事件
- 绑定到另一个文件中的触发器事件
- 选择JavaScript中的框触发器事件
- DOM加载后定义的触发器事件-JIRA打开新的问题模式
- PHP生成的表上的触发器事件
- 选择在jQuery中不起作用的触发器事件