我遇到了javascript执行代码的方式(异步)
我有一小段代码会触发事件并检查'valid'的值。
我的问题是输入if语句时'valid'始终为true,因为事件尚未完成处理:
valid = true;
$(this).find('input').trigger('blur');
//valid will be modified in the triggered events
if(valid){
//Do something
}
所以我想等到事件结束才能进入语句,但触发器不接受回调
我已经看到一些关于此的问题已经解决,但我不理解它们以及如何实现它们。
我应该用什么来解决这个问题?
答案 0 :(得分:0)
感谢JamesThorpe,我找到了我想要的答案:
valid = true;
$.when($(this).find('input').trigger('blur')).done(function(){
if(valid){
//Do something
}
});
现在if语句只在触发事件后执行
答案 1 :(得分:0)
如果你想让它在模糊时触发,你可以这样做:
$(this).find('input').on('blur', function(){
if(valid){
//Do something
}
});
请注意,该功能将在所有模糊事件中触发。只有一次使用.one()
答案 2 :(得分:0)
我不明白你为什么要使用触发器。我想你可以直接使用blur
事件:
$(this).find('input').blur(function(){
if(valid)
//do something
});