2010-09-08 10 views
8

DOM'a bir noktaya yerleştirilmesi gereken büyük bir kod parçam var. şimdi yapıyorum SağJavascript jQuery DOM'a büyük bir kod parçası eklemek için en iyi yol

<ul id="info'+value+'" class="info"><li class="hide"></li><li class="lock"><ul> 
// just a piece of the code with variable "value" 

:

var codeToInsert = "<some code/>" 
codeToInsert.insertAfter('#someID'); 

bakış performans açısından bunu yapmak için daha iyi bir yolu var mı kodu da bazı değişkenleri içeriyor? http://api.jquery.com/category/manipulation/

+0

Küçük bir html kodu örneğini genişletebilirsiniz. Bu kod ajax ile mi geliyor? Bu, html kodunu bölmek için bazı sınırlayıcı olabilir mi? –

cevap

9

Eğer: kafamın

0

Üst, ayrıca bu tür fonksiyonları bir dizi için bu kontrol,) (vb .appendT(), .Daha önce(), .after() .Append kullanabilirsiniz büyük bir kod parçası eklemek istiyorsanız, kendi seçicisi için jQuery öğesini kullanın ve daha sonra innerHTML DOM özelliğini kullanın - bu, HTML'nin büyük bir yığınını yerleştirmenin en hızlı yoludur. JQuery'ye eklenecek dizeyi sarmayın, bir dize olarak bırakın.

E.g .: $('#somePlaceholder')[0].innerHTML = myHTMLString;.

http://www.quirksmode.org/dom/w3c_html.html

: HTML ayrıştırıcı her zaman DOM motora göre daha hızlı olduğu için

genel innerHTML normal DOM yöntemlerden daha hızlıdır. Karmaşık değişiklikler yapmak istiyorsanız, innerHTML kullanın. (InnerHTML teorik olarak daha hızlı kalsa basit değişiklikler için gerçekten, hangi yöntemi kullanmak önemli değildir.)

Eğer JS dize birleştirme yaparsanız, sonunda bir dizi, push() parça ve join() oluşturmak yerine ekleme örneğin += veya +. Özellikle bir fark yaratıyor. IE'de.

+0

Bunun herhangi bir fark yaratacağından kuşkuluyum, performans bilge. Temelde aynı şeyi yapmak için sadece biraz farklı bir sözdizimi. –

+0

Performanstan tasarruf edebileceğiniz tek yer, kodu eklemek istediğiniz yerin seçimidir. Performans açısından birbirlerinden çok farklı olduklarını düşünmeyin. Ama yine de bir göz at ve diğerinden daha iyi birini bulursan görmeye çalış. –

+0

insertAfter(), bu doğruyu, istediğim yere yerleştirme olanağı verir; bu, append() öğesinin, oluşturulması gereken veya zaten var olması gereken bir div'e yerleştireceği gibi. Ayrıca ek ile kubbe olabilir ama daha ziyade semantik performans ile aynı şey olabilir ... – Mircea