У меня есть несколько событий, которые являются асинхронными, так как они связаны с Ajax звонков, как этотИнициирующих асинхронное событие последовательно
$base.on('submit', '.form', function(){
$.ajax({url: this.action, data: $(this).serialize(), type: 'POST'}).done(function(response){
$("#container").append(response);
});
return false;
});
$base.on("click", "#addNew", function(){
$("#editArea").load($(this).data('href'));
return false;
});
Что я хочу, чтобы достичь является синхронно запускают первое form.submit()
событие, и только после того, как он закончит триггер $("#addNew").click()
, а затем сделайте что-нибудь еще. Я пробовал что-то вроде:
$.when($form.trigger('submit'))
.then(function(){$new.trigger('click')})
.done(function(){
//do something
});
Но это не работает. Кроме того, я должен отметить, что я не могу использовать triggerHandler
, поскольку эти события делегированы (они загораются в вставленном ajax содержимом). Конечно, я мог бы сделать эти ajax-вызовы синхронными через async: true
, но я хотел бы избежать модификации существующего кода как можно больше. Есть ли другой способ делать такие вещи?
Dowvote без комментариев не идет. – dbf
Дорогой, нормальная ли строка '$ ('# container')' begin with 'и заканчивается на?? –
Это не так, но это не мой правильный код (я пишу в CoffeeScript), я написал его вручную, поэтому я сделал некоторые опечатки на этом пути. – Eternal1