ハンドラから返された配列に基づいてjQueryにチェックボックス項目のリストを作成しています。jQueryを使用して要素を動的に作成する
含まれる要素は、.listContainer
の要素です。この要素に追加する動的要素のそれぞれは、.listContainerItem
要素の形式をとります。各項目はチェックボックスの値とラベルを作成する配列項目に基づいています。
<div class="listContainer">
<div class="listContainerItem">
<input type="checkbox" value="1" />
<div class="listContainerItemLabel">Checkbox 1</div>
</div>
</div>
配列が渡された時点で、これを作成する最も効率的な方法は何ですか?私は以下のようにそれを達成しようとしていますが、すぐに主要なパフォーマンスの問題にぶつかります。
function AddItemToListContainer(item) {
var currentItems = $j("#listContainerAvailable .listContainerItem");
if ($j.grep(currentItems, function (e) { return $j(e).find(":checkbox:first").val() == item.Id; }).length === 0) {
labelDiv = $j("<div />").addClass("listContainerItemLabel").html(item.Text);
itemToAdd = $j("<div />").addClass("listContainerItem").append("<input type=\"checkbox\" value=\"" + item.Id + "\" />").append(labelDiv);
currentItems.append(itemToAdd);
}
}
私はそれを実装するのは非常にどのようにしてください.map
機能に見えたが、いませんでした。誰かが私を正しい方向に向けることができますか?
を使用することができます: '.append( "の "読み込みとデバッグがはるかに簡単です。 – insertusernamehere
アイテムのリストを一度に取得できますか?チェックボックス全体を置き換えることはできますか? – insertusernamehere
私は最初に配列にないDOMから何かを削除する別の関数を持っているので、各項目が既にDOMで表現されていないことを確認して、それを追加しないでください。 –