1

jquery を使用してテーブルに行をロードしています。行を 1 つずつロードする方法を知りたいです。つまり、2 番目のブロックは、最初のブロックのロードが完了してからロードを開始する必要があります。

私のテーブルは次のようになります。

<table id="dynamicTable">
  <thead>
    <tr>
      <th>Heading</th>
      ...
    </tr>
  </thead>
  <tbody id="1">
  </tbody>
  <tbody id="2">
  </tbody>
</table>

そして、私のjqueryは次のようになります。

$("table#dynamicTable tbody").each(function() {
  $(this).load("filethatgeneratestablerows.php");
});

(tbody id に基づいてコンテンツを生成し、影響を与える tbody 要素を選択するためのチェックボックス システムも含まれているため、これよりも少し複雑ですが、すべて正常に機能するため、実際の質問はもっと明白です!)

4

3 に答える 3

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

(function loadBody() {
   bodies.eq(i++).load("filethatgeneratestablerows.php", loadBody);
})();

これにより、コレクションの各インデックスで一度に 1 つずつ load が呼び出されます。1 つの読み込みが完了するとloadBody、インクリメントされたインデックスを使用して再度呼び出します。

iが最後のものより大きい場合、.eq()空の jQuery オブジェクトが返されるため、シーケンスはそこで終了します。

于 2012-10-01T14:57:40.483 に答える
1

さまざまな tbody を格納する配列を作成する必要があります。最初から始めて、ロードを実行します。完了したら、最初に取り出された配列を渡します。したがって、次のように渡します。

[1, 2, 3, 4] [2, 3, 4] [3, 4] [4] []

そして、配列を取り込んで最初の要素をロードし、残りの要素を渡すか、なしで中断するロード関数を呼び出し続けます。

元:

loadElement( $("table#dynamicTable tbody") );

function loadElement( $elements ) {
    $elements.load( "filethatgeneratestablerows.php",
            loadElement( $elements.filter(":gt(0)") ) );
}
于 2012-10-01T14:51:45.370 に答える
0

あなたはすることができます

$("table#dynamicTable #1").load("filethatgeneratestablerows.php", function(event) {
     $("table#dynamicTable #2").load("filethatgeneratestablerows.php", function(event) {
        ....
     });
  });
});

テストされていませんが、要点を理解する必要があります

于 2012-10-01T14:51:37.763 に答える