2009-09-18 17 views
69

C'è un/modo più semplice più veloce per ottenere l'elemento aggiunto utilizzando jQuery append:modo più semplice per ottenere un oggetto jQuery da elemento aggiunto

Come ottenere l'elemento $ selettori:

$container.append('<div class="selectors"></div>'); 
var $selectors = $('.selectors', $container); 

ho provato :

var $selectors = $container.append('<div class="selectors"></div>'); 

ma che rende $ selettori = $ contenitore

Forse è il più veloce/b est modo. Solo controllando.

risposta

138

Perché non basta:

var el = $('<div class="selectors"></div>'); 
$container.append(el); 

?

Quindi si ha accesso a 'el'.

+2

Hm. Cosa succede se '$ container' ha più elementi in questo caso? Nel mio caso voglio aggiungere qualcosa a tutte le istanze che un selettore corrisponde e ottenere una collezione di elementi creati. –

+1

non funzionerà su più istanze di '$ container' http://jsfiddle.net/onL028ty/. Usa il trucco 'appendTo' invece http://jsfiddle.net/6nmdh84e/ – ktutnik

56

Questo è il mio modo preferito di farlo:

var $selectors = $('<div class="selectors"></div>').appendTo(container); 
+3

+1 - anche il mio. Fai tutto ciò che devi fare con l'elemento appena creato prima di aggiungerlo al DOM. –

5
$selectors = $('<div/>').addClass('selectors').appendTo($container); 
+1

Buone informazioni, grazie. È un po 'prolisso per me rispetto alle altre risposte, ma mi chiedo se ha prestazioni migliori? Le prestazioni non sono un problema nella mia situazione particolare, ma forse per gli altri. – slolife

2

Si potrebbe anche creare una nuova funzione jQuery per farlo:

jQuery.fn.addChild = function(html) 
{        
    var target = $(this[0])        
    var child = $(html);              
    child.appendTo(target);             
    return child;                
}; 

e quindi utilizzarlo in questo modo:

$('<ul>').addChild('<li>hi</li>'); 

ovviamente se si desidera aggiungere più di una voce:

var list = $('<ul>'); 
list.addChild('<li>item 1</li>'); 
list.addChild('<li>item 2</li>'); 

Il vantaggio di approcci come questo è che in seguito si può aggiungere di più per la funzione "addChild", se volete. Si noti che per entrambi gli esempi sopra, è necessario aggiungere l'elemento al documento, quindi un esempio completo potrebbe essere:

$('body').addChild('<ul>').addChild('<li>hi</li>'); 
+2

Penso che l'ultima parte di questa risposta aggiunga solo confusione; l'aggiunta al documento non faceva parte della domanda. Potresti mantenerlo semplice come il cleto e far credere al lettore che $ container sia un UL. $ container.append ('

  • hi
  • '); Comunque, fantastico. Grazie. –

    Problemi correlati