JQuery延迟使用.each()

Kev*_*onk 7 jquery jquery-deferred

有关如何使用JQuery的延迟方法以及检测所有已更改的表单并将每个表单作为Ajax帖子提交的功能的任何想法?

如果我只列出一大堆表单提交,但是如果我使用...我可以得到相同的工作

$('form.changed').each(function(){
  return $(this).submitWithAjax();
});
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用的更完整版本的代码就在这里...... 在JS Fiddle

提前致谢!

Poi*_*nty 17

而不是".each()",使用".map()":

var deferreds = $('form.changed').map(function(i, elem) {
  return $(this).submitWithAjax();
});

$.when.apply(null, deferreds.get()).then(function() { ... });
Run Code Online (Sandbox Code Playgroud)

"$ .when()"事件允许你捆绑一堆延迟对象并等待它们全部成功(或任何失败 - 注意那里的差异).它通常允许任意数量的参数,但由于我们有一个数组,我使用"apply()".

请注意,我只是轻易使用​​这些东西,所以请阅读jQuery API文档以仔细检查:-) edit - 在重新阅读您的问题时,我可能误解了您.