$('input').trigger('input')
когда эта функция работает, она запускается на всех входах. Как я могу узнать, когда все события, произошедшие в результате вышеупомянутого действия, завершены? Я думаю, что я спрашиваю о jQuery, when
метод, но я не совсем уверен....
Мое усилие:
$.when( $('input').trigger('input')).done(
function (x) {
if (!$('#mybutton').hasClass('clobbered') {
submitData();
}
}
);
Обновление: Спасибо за ваши комментарии, похоже, я переусердствовал с проблемой. Я был обеспокоен тем, что триггер может работать асинхронно....
$('input').trigger('input')
следует за последовательным выполнением... учитывая, что ни один из обработчиков не выполняет асинхронный процесс...
Если у них есть асинхронные процессы, нам не повезло, поскольку у нас нет доступа к этим обещаниям...
Если асинхронный процесс, инициированный целевыми обработчиками, не выполняется, следующая строка будет выполнена после того, как будут запущены все обработчики ввода.
$('input').trigger('input')
//do something
Таким образом, в приведенном выше случае часть do something
будет вызвана только после вызова всех обработчиков, но не обязательно после любого асинхронного процесса, инициированного этими обработчиками...
Я не знаю, поможет ли это вам, если я это исправлю, вы пытаетесь выполнить что-то, когда некоторые события действительно запущены, верно?
Поэтому я сделал небольшой эксперимент, как показано ниже:
<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)
чтобы сделать правильный подсчет.
$('input').trigger('input')
следует за последовательным выполнением ... учитывая, что ни один из обработчиков не выполняет асинхронный процесс ... если они это делают, нам не повезло, поскольку у нас нет доступа к этим Обещания ... если не существует асинхронного процесса, инициированного целевыми обработчиками, то следующая строка будет выполнена после того, как все обработчики ввода будут запущены