2016-03-24 8 views
1

コードを簡潔にし、不必要なDOMのレンダリングを減らすために、文書を文書に追加する前にテーブルを作成して設定しようとしています。私が抱えている問題は、divだけがテーブルに追加されていることです。つまり、divを含むテーブルの代わりに、divを含むテーブルがあります。文書にまだ挿入されていない新しいノードに追加する

私は.appendTo機能を使用する場合、それはtrtdを追加し、tabletrが、代わりにdiv要素を除去して、順番にそれぞれにそれを追加し、最後に終わるされていないので、これはかなり確信していますテーブルに

ドキュメントに追加する前にノードチェーンを構築するにはどうすればよいですか?

コード:

var playerSelect = $("#playerSelect"); 
    var playerElements = []; 
    var rowCounter = 0; 
    var playerTable = $("<table/>").attr("id", "playerTable"); 
    for (player in playerBase){ 
     var playerDiv = $("<div/>").addClass("player").text(player + playerBase[player].rating); 
     playerDiv.appendTo("<td/>").appendTo("<tr/>").appendTo(playerTable);     
    }; 
    playerSelect.append(playerTable); 

答えて

3

.appendTo()は、文字列値を受け付けません。 $()しかしんので、あなたは次のようにコードを変更できます。これはあなたがこれらの多くを持っている場合は、テンプレートエンジンを見てしたい場合があり、それを行うためのクリーンな方法ではない、と述べた

$("<tr />").append($("<td />").append(playerDiv)).appendTo(playerTable); 

あなたのコード内の構造体。

+0

私はこれまでに試してみましたが、もう一度試しましたが、同じ結果が得られました。 –

+0

あなたのコードスニペットで起こっていることは、playerDivが​​に追加されますが、 '.appendTo()'は、​​の代わりにplayerDivを返します。私の更新されたコードを見てください。 – Thomas

+0

それはそれでした。私は単純に '.appendTo'が追加された要素ではなく、追加される要素を返すことを期待していました。 –

0
for (player in playerBase){ 
var tr = $('<tr/>'); 
var td = $('<td/>'); 
    td.appendTo(tr); 
     var playerDiv = $("<div/>").addClass("player").text(player + playerBase[player].rating); 
     playerDiv.appendTo(td); 
     tr.appendTo(playerTable); 
}; 
+0

いいえ、同じ結果です。 –

+0

は、コードにエラーがあったことを示します。私はちょうどそれを編集しました。一見する –

関連する問題