$('input').trigger('input')
当上述函数运行时,它会触发所有输入。如何判断由于上述操作而发生的所有事件何时完成?我想我问的是jQuery when
方法,但我并不完全确定....
我的努力是:
$.when( $('input').trigger('input')).done(
function (x) {
if (!$('#mybutton').hasClass('clobbered') {
submitData();
}
}
);
更新:谢谢您的评论,这听起来像是在推翻这个问题。我担心触发器可能异步操作....
答案 0 :(得分:1)
$('input').trigger('input')
遵循顺序执行...假设没有处理程序执行异步处理....
如果他们确实有异步流程,那么我们运气不好,因为我们无法获得这些承诺......
如果目标处理程序没有启动异步进程,则在触发所有输入处理程序后将执行下一行。
$('input').trigger('input')
//do something
因此,在上述情况下,只有在调用所有处理程序之后才会调用do something
部分,但不一定在这些处理程序启动任何异步处理之后调用...
答案 1 :(得分:0)
我不知道这是否会对你有所帮助,如果我做对了,你会尝试在某些事件被实时启动时执行某些事情,对吗?
所以我做了一个小实验如下:
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<button type="button">Not yet!</button>
var numberOfInputs = 5;
var eventCounts = 0;
$(document).on('input', function (e) {
eventCounts++;
if (numberOfInputs === eventCounts) {
$('button').text('Ready to go!');
}
});
$('input').trigger('input');
它只是有效。
我假设您确切地知道您有多少input
,但如果不是这样,那么您可以检查length
$(input)
以使我的计数正确。