jquery .each().load()等待完成

use*_*347 1 javascript jquery

我正在使用jquery将行加载到表中,我想知道如何逐个加载它们; 即第二个块只应在第一个块完成加载后开始加载.

我的表看起来有点像这样:

<table id="dynamicTable">
  <thead>
    <tr>
      <th>Heading</th>
      ...
    </tr>
  </thead>
  <tbody id="1">
  </tbody>
  <tbody id="2">
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

我的jquery看起来有点像这样:

$("table#dynamicTable tbody").each(function() {
  $(this).load("filethatgeneratestablerows.php");
});
Run Code Online (Sandbox Code Playgroud)

(它比这更复杂,因为它根据tbody id生成内容,还包括一个复选框系统来选择你想要影响哪些tbody元素,但是一切正常,所以我把它剥离了以使我的实际问题更明显!)

I H*_*azy 5

var bodies = $("table#dynamicTable tbody"),
    i = 0;

(function loadBody() {
   bodies.eq(i++).load("filethatgeneratestablerows.php", loadBody);
})();
Run Code Online (Sandbox Code Playgroud)

这会一次调用一个集合的每个索引.当一次加载完成后,它将loadBody使用递增的索引再次调用.

i大于最后一个时,.eq()将返回一个空的jQuery对象,因此序列将在那里结束.