我正在基於處理程序返回的數組構建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( 「」)'可以是'.append('')'這只是更容易閱讀和調試。 – insertusernamehere 2013-03-04 12:14:42
您是否一次獲得物品清單,您是否可以替換整套複選框,還是隻能在任何時候添加一些新物品? – insertusernamehere 2013-03-04 12:18:18
我有一個單獨的函數,首先從不在數組中的DOM中刪除任何東西,所以我需要做的就是檢查每個項目是否已經在DOM中表示過,如果沒有添加它。 – 2013-03-04 12:26:19