2013-04-19 7 views
39

Sto semplicemente aggiungendo un elemento che è sul DOM come:Ottenere l'accesso a un elemento di jQuery che è stato appena allegato al DOM

$("#div_element").append('<a href="#">test</a>'); 

Subito dopo aggiungo che ho bisogno di accedere all'elemento ho appena fatto al fine di impegnare una funzione di scatto ad essa, ho provato:

$("#div_element").append('<a href="#">test</a>').click(function(){alert("test")}); 

ma quanto sopra non ha funzionato. Potrei id unicamente l'elemento ma sembra un po 'troppo lavoro quando forse c'è un modo per ottenere l'elemento subito dopo averlo aggiunto.

+0

Basta collegare il gestore di clic PRIMA di aggiungerlo. – Blazemonger

+1

possibile duplicato di [Come posso ottenere un riferimento a un nodo direttamente dopo che è stato aggiunto?] (Http://stackoverflow.com/questions/1162677/how-can-i-get-a-reference-to-a- nodo-direttamente-dopo-è-aggiunto) e [Access Elements After Append] (http://stackoverflow.com/q/5937019/218196). –

risposta

67

Si può fare questo:

var el = $('<a href="#">test</a>'); 

$("#div_element").append(el); 

el.click(function(){alert("test")}); 

// or preferrably: 
el.on('click', function(){alert("test")}); 

La funzione di aggiunta accetta due tipi di argomenti: una stringa o un elemento di jQuery. Nel caso in cui una stringa venga passata, creerà un elemento jQuery internamente e lo aggiungerà all'elemento genitore.

In questo caso, si desidera accedere all'elemento jQuery da soli, in modo da poter allegare il gestore eventi. Quindi, invece di passare la stringa e lasciare che jQuery crei un elemento, devi prima creare l'elemento e poi passarlo alla funzione append.

Dopo averlo fatto, si ha ancora accesso all'elemento jQuery per poter allegare il gestore.

+0

Mentre penso che il '.on' sia il modo migliore per farlo, in realtà hai risposto alla domanda! Buon lavoro! – romo

+0

Grazie, funziona molto bene! –

+0

Quindi, è la risposta a mettere $() attorno alla stringa prima di aggiungerla? Qual è il ragionamento e la storia qui? – sheriffderek

0

Add identità che element quindi utilizzarlo come segue

$("#div_element").append('<a id="tester" href="#">test</a>'); 


$('#tester').on('click', function(event) { 
console.log('tester clicked'); 
}); 
0

perché non risparmiare un riferimento al nuovo elemento prima di aggiungerlo:

var newElement = $('<a href="#">test</a>'); 
$("#div_element").append(newElement); 
newElement.click(function(){alert("test")}); 
0

L'ultimo elemento sarebbe il nuovo elemento

$('a:last','#div_element').on('click',function(){ 
    // do something 
}); 
0

È possibile allegare evento per elemento quando lo si crea -

var ele =$("<a href='#'>Link</a>"); 

ele.on("click",function(){ 
    alert("clicked"); 
}); 


$("#div_element").append(ele); 
0

è sufficiente collegare il gestore clicca per l'ancora PRIMA di aggiungerlo.

$("#div_element").append($('<a href="#">test</a>').click(function(){alert("test")})); 
5
var $a = $('<a />', {href:"#"}) 
    .text("test") 
    .on('click', function(e) { 
    alert('Hello') 
    }) 
    .appendTo('#div_element'); 

http://jsfiddle.net/33jX4/

Problemi correlati