[英]How to insert multiple elements into one element via append in a for loop?
當我嘗試在for循環中追加多個元素時,為什么只插入最后一個元素,我感到非常困惑。
我創建了一個JsFiddle,展示了我無法讓它發揮作用。 我希望插入100個錨標簽,但只插入最后一個元素。
<body>
<h1>Zonk!</h1>
<div class="door_game" data-doors="10">
</div>
</body>
我想將所有100個元素插入div.door_game
:
<body> <h1>Zonk!</h1> <div class="door_game" data-doors="10"> </div> </body>
這是因為你所有的門都在分享同樣的$el
。
var Door = {
number: null,
isSelected: false,
containsZonk: true,
bind: function () {
var that = this;
this.$el.on('click tap', function () {
that.isSelected = true
});
},
init: function () {
this.$el = $('<a>', {
class: 'door selectable'
});
return this;
}
}
Door $ el創建一次,這就是為什么它會被追加並再次附加(即一次又一次地移動),這樣你才能看到最后一個。 @plalx是對的。
更重要的是,因為你附加了數百個門,在循環之前使用documentFragment( var frag = document.createDocumentFragment()
)來收集你的門( frag.appendChild(...)
)並將此documentFragment附加到平台循環后$ el( this.$el.appendChild(frag)
)。 對於這樣的元素量,性能增益非常重要。
並且,不要猶豫克隆元素而不是重建它。 它要快得多。 您甚至可以使用DOM API cloneNode(false)
方法對原始元素進行深度復制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.