2009-09-18 7 views
69

Czy istnieje prostszy/szybciej sposób, aby uzyskać element dodawane przy użyciu jQuery dołączyć:łatwiejszy sposób uzyskać obiekt jQuery z załączonym elementem

Jak zdobyć elementu $ selektorów:

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

próbowałem :

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

ale sprawia, że ​​$ = $ selektorów pojemnik

Może to najszybsza/b est sposób. Tylko sprawdzam.

Odpowiedz

138

Dlaczego nie po prostu:

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

?

Następnie masz dostęp do "el".

+2

Hm. Co się stanie, jeśli '$ container' ma w tym przypadku wiele elementów? W moim przypadku chcę dołączyć coś do wszystkich instancji pasujących do selektora i uzyskać kolekcję utworzonych elementów. –

+1

to nie działa na wielu instancjach '$ container' http://jsfiddle.net/onL028ty/. Użyj sztuczki 'appendTo' zamiast: http://jsfiddle.net/6nmdh84e/ – ktutnik

56

To jest mój ulubiony sposób to zrobić:

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

+1 - moje też. Zrób wszystko, co musisz zrobić z nowo utworzonym elementem przed dołączeniem go do DOM. –

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

Dobra informacja, dzięki. Jest to dla mnie trochę gadatliwy w porównaniu do innych odpowiedzi, ale zastanawiam się, czy ma lepszą wydajność? Wydajność nie jest problemem w mojej konkretnej sytuacji, ale może dla innych. – slolife

2

Można również utworzyć nową funkcję jQuery to zrobić:

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

a następnie używać go tak:

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

oczywiście, jeśli chcesz dodać więcej niż Jedna pozycja:

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

Zaletą takiego podejścia jest to, że później możesz dodać więcej do funkcji "addChild", jeśli chcesz. Zauważ, że dla obu powyższych przykładów, musisz dodać element do dokumentu, więc pełny przykład może być:

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

Myślę, że ostatnia część tej odpowiedzi tylko wprowadza zamieszanie; dołączenie do dokumentu nie stanowiło części pytania. Możesz zachować to naprawdę proste, tak jak w przypadku cletus, a czytelnik wyobraża sobie, że $ container jest UL. $ container.append ('

  • hi
  • '); Anyways, great. Dzięki. –