2012-02-23 15 views
33

jQuery lepiej jest utworzyć elementu DOM tak: -Najlepszy sposób na tworzenie nowych elementów DOM

function create(options) 
{ 
    $('<form action="' + options.action + '"></form>');  
} 

Albo tak:

function create(options) 
{ 
    $form = $('<form></form>'); 
    $form.attr('action',options.action); 
} 

To może być kwestia opinii. Czuję, że drugi sposób daje większą jasność, ale podejrzewam, że jest mniej skuteczny ...

+0

To się nazywa mikrooptymalizacja, znana również jako "źródło wszelkiego zła". – JJJ

+0

@Juhana: Myślisz o przedwczesnej optymalizacji. Nie wiem, dlaczego pytanie o metody konstrukcji elementu DOM można by uznać za przedwczesne, a nawet mirco, optymalizację. Od pytania ...* "Czuję, że drugi sposób daje większą jasność ..." * –

+0

* "... ale podejrzewam, że jest mniej efektywny." * Myślę, że można bezpiecznie powiedzieć, że nie pyta, ponieważ wskazał ten problem jako wąskie gardło w jego kodzie. – JJJ

Odpowiedz

27

jQuery może utworzyć obiektu jako następujący kod

$form = $('<form>', {action: 'my action'}); 

class to słowo zarezerwowane w IE i musi być cytowany . Zobacz pełną listę słów zastrzeżonych: Reserved Keywords in Javascript

+0

+1 Pokonaj mnie. Chociaż zawsze powinieneś dołączyć znacznik zamykający, ponieważ niektóre (teraz przestarzałe) przeglądarki nie dodają tego automatycznie: Np. '$ ('

', {action: 'moje działanie'});' –

+0

nie tylko nieaktualne. Miałem problem z IE8 o niezamkniętym znaczniku 'form', możesz to zrobić w ten sposób' $ ('') ' – andlrc

+5

Będę klasy IE8 jako przestarzałe osobiście: D –

1

Jeśli nie używasz tej funkcji wiele razy, różnica w wydajności będzie nieznaczna. Więc chciałbym zawsze iść z najczystszych, najłatwiej aktualizować rozwiązania (czyli drugiej).

+0

@NateBarbettini Brzmi bardzo jak odpowiedź na mnie? – Anders

4

Zawsze robię drugi.

function create(options) 
{ 
    $form = $('<form></form>'); 
    $form.attr('action',options.action); 
} 

Preferuję tę metodę tylko dlatego, że jest bardziej czytelna.

36

Check this, aby dowiedzieć się o sobie.

Creating DOM notes using jQuery Uwaga większe jest lepsze (OPS/Sec = operations per second = how many times per second the given code executes)

Zwycięzcą testu w każdej innej przeglądarce niż Opera:

var form = document.createElement("form"), 
    $form = $(form); 
form.action = options.action; 

UWAGA:

metoda native być jeszcze szybszym, jeśli nie trzeba się jQuery obiektu:

var form = document.createElement("form"); 
form.action = options.action; 
+0

+1 Jeśli są jakieś wątpliwości o wydajności * i * jasności, to zajmie się obiema. –

+0

+1 Nie wiedziałem o jsperf.com - to bardzo miłe, dzięki za wprowadzenie! – rgvcorley

+0

+1 dla jsPerf i sugerowanie braku jQuery. Ludzie zwykle robią wszystko za pomocą jQuery, powinni wiedzieć, kiedy jest lepiej. – Lennon

3

nigdy nie boli, aby zoptymalizować ... aż robi ... można użyć prosto JS:

function create(options) 
{ 
    var newform = document.createElement('form'); 

    newform.setAttribute('action',options.action); 
} 

Poza tym jest znikome jak wspomniano powyżej, cokolwiek jest łatwiejsze do odczytania dla ciebie ... tj opcja 2

0

Nie jesteś pewien aktualnego kodu jquery i nie wiesz, który z nich ma lepszą wydajność.

W każdym razie, jak mogę sobie wyobrazić, w pierwszym przypadku jquery będzie analizować atrybuty mimo to i ustawia dla nich wartości, więc nie powinna występować duża różnica wydajności.

Więc myślę, że pierwsze rozwiązanie jest wygodniejsze, jeśli zawiera dużo kodu HTML, w przeciwnym razie wolę drugi.

Powiązane problemy