我正在基于处理程序返回的数组构建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