2009-02-16 19 views
5

Yazdığım bir sıralanabilir tabloyu optimize etmeye çalışıyorum. Darboğaz dom manipülasyonunda. Şu anda tabloyu sıraladığım her zaman yeni tablo satırları oluşturup bunları ekliyorum. Hatları yeniden düzenlemek değil, sıraları yeniden düzenleyerek işleri hızlandırabilir miyim diye merak ediyorum. Bunun önemli bir fark yaratması için, düğümün yeniden düzenlenmesi, düğüm oluşturmadan çok daha fazla yanıltıcı olmalıdır. Bu dava mı? sayesinde -Morganjavascript/dom - dom düğümlerin yeniden düzenlenmesi vs ne kadar pahalı oluyor?

Bazı kriterler için kullanışlı bu sayfayı bulabilir
+0

Eğer sıralama olduğunuz tabloya kaç satır olduğunda oluşturma ve DOM düğümlerinin Kesilmesine kadar hızlı yaklaşık iki kat olmasıdır? –

+0

yüzlerce hatta binlerce – morgancodes

+0

Ben senin soruya cevap değil downvoted alacak şekilde cevap olarak bu yazı için gitmiyorum ama jQuery için tablesort eklenti gördük? - http://tablesorter.com/docs/example-pager.html –

cevap

1

oluşturmadan veya manipüle hızlı olup olmadığını bilmiyorum, ama olacağım biliyorum Tüm tabloyu, sayfada bulunmadığında ve daha sonra bir kerede tümüyle değiştirdiğinizde daha hızlı. Bu satırlar boyunca, muhtemelen tüm tablo DOM'dan kaldırılmamışsa, mevcut satırları yeniden düzenlemek daha yavaş olacaktır.

This page, geçerli tabloyu klonlamak, istediğiniz gibi değiştirmek ve DOM üzerindeki tabloyu değiştirmek için en hızlı olacağını önerir.

+0

oh. ilginç. Teşekkürler. – morgancodes

1

Ben bir dize olarak tüm içeriğini bina yerine düğümleri tek-by ekleme innerHTML kullanarak, şu an yaklaşık iki kat daha hızlı bir şekilde bu tabloyu çiziyorum.

+0

vay, aslında, bu teknik IE6'da daha da kötüleştiriyor. – morgancodes

+1

string = string + newstring yerine bir dizi kullanın: var a = []; while (loop) {a.push (newstring)} sonuç = a.join (""); // IE'de dizgi birleştirmesi çok yavaş. Bir zamanlar Opera'nın 4 saniyede bitirdiği bir test yaptım ve IE hala 20 dakika sonra bitmedi. – some

+0

Evet, ben de bununla karşılaştım, ama yaptığım şeyle, IE6'da innerHTML kullanmaktan çok dom düğümleri eklemek daha hızlı görünüyor. – morgancodes

0

Eğer yapabilirsen, gerçek dom manipülasyon olarak değil dom manipülasyon yapmak daha iyidir, ancak komut dosyası içinde yöntemle ve daha sonra dom manipüle çeşit olarak. Yani daha doğrusu her düğümde bir rötuş ne denir yapmaktansa, sen neden daha sonra gerçek dom bağlı olacağını bir ebeveyn içine bu düğümleri takmak sonra kendi yöntem haline her düğüm üzerinde rötuş ne olurdu kümelenir ve yüzlerce yerine sadece iki repaints. Yeni verilerinizle güncellemeden önce iki b/c'nin dom içinde ne olduğunu temizlemeniz gerektiğini söylüyorum.

0

Bunun bir cevap arıyordu ve böylece saf bir kriter değildir ve çok başka yollarla muhtemelen çarpık var, o jQuery kullanan hızlı bir kriter http://jsfiddle.net/wheresrhys/2g6Dn/6/

kurmaya karar verdi. Ama verir sonuç DOM düğümleri hareketli her zaman

İlgili konular