2010-09-08 8 views
8

Mam duży kawałek kodu, który musi zostać wstawiony do DOM w pewnym momencie. Kod zawiera również pewne zmienne:JavaScript jQuery najlepszy sposób na wstawienie dużego kawałka kodu do DOM

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

Teraz robie:

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

Czy istnieje lepszy sposób to zrobić z punktu widzenia wydajności?

+0

Czy możesz rozwinąć mały przykład kodu html. Czy ten kod pochodzi z ajax ?, Czy może to być jakiś separator do dzielenia kodu HTML, przyjść w częściach na json? –

Odpowiedz

9

Jeśli chcesz wstawić duży kawałek kodu, użyj jQuery dla swojego selektora, a następnie użyj właściwości DOM innerHTML - jest to najszybszy sposób na wstawienie dużego fragmentu kodu HTML. Nie owijaj łańcucha, który ma zostać wstawiony do JQuery, pozostaw jako ciąg.

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

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

W ogólnym innerHTML jest szybszy niż normalnych metod DOM ponieważ parser HTML jest zawsze szybciej niż silnik DOM. Jeśli chcesz wprowadzić skomplikowane zmiany, użyj innerHTML. (W przypadku prostych zmian to nie ma znaczenia, której metody użyć, chociaż innerHTML pozostaje teoretycznie szybciej.)

Jeśli zrobisz ciąg konkatenacji w JS, utworzyć tablicę, push() części i join() na końcu zamiast dołączania z np += lub +. To czyni różnicę esp. w IE.

0

mojej głowie, można również użyć .append(),(), .appendT .Przed() .Po() itd Sprawdź to dla wielu takich funkcji: http://api.jquery.com/category/manipulation/

+0

Wątpię, by to miało jakikolwiek wpływ na wydajność. To tylko trochę inna składnia, aby zrobić to, co zasadniczo jest tym samym. –

+0

Jedynym miejscem, w którym można zaoszczędzić na wydajności, jest wybór miejsca, w którym chcesz wstawić kod, jak sądzę. Nie myśl, że tak bardzo różnią się one od siebie pod względem wydajności. Ale wciąż spójrz i spróbuj sprawdzić, czy znajdziesz coś lepszego od drugiego. –

+0

Funkcja insertAfter() daje mi możliwość pozycjonowania tego dokładnie tam, gdzie chcę, tak jak w miejscu gdzie append() umieści to w div, który musi zostać utworzony lub już istnieje. Może być również kopułą z dodatkiem, ale raczej semantyka może być tym samym co wydajność ... – Mircea

Powiązane problemy