öğelerini kullanarak dinamik olarak oluşturma Öğeleri bir işleyiciden dönen bir diziye göre jQuery'de bir onay kutusu öğeleri listesi oluşturuyorum.jQuery
İçeren öğe aşağıda .listContainer
öğesidir ve buna eklemek istediğim her dinamik öğe .listContainerItem
öğesinin şeklini alır. Her bir öğe onay kutusu değerine sahip olacak ve onu oluşturan dizi öğesine göre etiketleyecektir.
<div class="listContainer">
<div class="listContainerItem">
<input type="checkbox" value="1" />
<div class="listContainerItemLabel">Checkbox 1</div>
</div>
</div>
, bu yaratmanın en etkili yolu nedir? Bunu aşağıdaki gibi gerçekleştirmeye çalışıyorum, ancak hızlı bir şekilde önemli performans sorunlarıyla karşılaşıyorum.
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);
}
}
Ben .map
işlevi baktım, ama oldukça nasıl bunu uygulamaya emin oldum. Birisi bana doğru yönde işaret edebilir mi?
kullanabilirsiniz: '.Append ("") 'olabilir .append ('')' Bu sadece okumak ve hata ayıklamak için daha kolaydır. – insertusernamehere
Öğelerin listesini bir seferde alıyor musunuz ve tüm onay kutularını değiştirebilir misiniz, yoksa herhangi bir zamanda yalnızca birkaç yeni ekleme mi? – insertusernamehere
İlk önce DOM'da dizideki olmayan her şeyi kaldıran ayrı bir işlev var, bu yüzden tek yapmam gereken şey, her öğenin DOM'da zaten temsil edilmediğini ve eklemediğini kontrol etmektir. –