2012-12-19 28 views
6

Próbujesz uzyskać tutaj efektywność. Jak mogę zapisać element jako zmienną przed dołączeniem go do DOM? Wygląda na to, że jest to marnotrawstwo, aby go utworzyć, dołączyć do niego, a następnie znaleźć go ponownie, aby utworzyć zmienną.jQuery zmień zmienną poza element przed dodaniem do DOM

Moja metoda znajduje się poniżej. OBV zapisuje ciąg jako zmienną, a nie obiekt, ale masz pomysł.

Każda magia dla mnie, czy muszę odbyć dwie podróże?

var $rGallery = '<section id="rGallery" />'; 

$bin.before($rGallery); 

console.log($rGallery); 
+0

Niektóre z tych przykładów może być lub nie być przydatne dla ciebie: http://stackoverflow.com/a/12009839/84206 – AaronLS

Odpowiedz

9

.before() i .append() może podjąć obiekt jQuery jako parametr. Trzeba tylko utworzyć nowy obiekt, zapisać go w zmiennej, a następnie przekazać do .before() lub .append().

Krótki przykład:

<div id="bin"> </div>

var newElement; 

$(document).ready(function() { 

    newElement = $("<button>New button</button>"); 
    $("#bin").append(newElement); 

    alert(newElement.text()); 
});​ 
2

Nie wiem dokładnie, co próbujesz zrobić tutaj, ale jeśli chcesz zapisać wynik selektor jQuery, można zrobić to tak jak każdy inny zmienna:

var gallery = $("#rGallery"); 

Jeśli chcesz utworzyć nowy element i zapisać go:

var gallery = document.createElement("section"); 
// Do other stuff on it, like set attributes, etc. 
+0

Rad, nie zdawałem sobie sprawy, że before() może wziąć obiekt zamiast łańcucha! – technopeasant

+0

@AaronLS Tak, zdałem sobie z tego sprawę wkrótce po zapisaniu odpowiedzi. Edytowane. – regulatethis

+0

przyjął odpowiedź @ jasontowne, ponieważ zamiast tego wyjaśnił metodę, a także udzielił odpowiedzi technicznej – technopeasant