2013-04-19 10 views
39

Ja po prostu dodanie elementu, który jest na DOM, takich jak:Uzyskiwanie dostępu do elementu jquery, który właśnie został załączony do DOM

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

zaraz po dołączyć go muszę dostęp do elementu Zrobiłem Aby powiązać z nim funkcję kliknięcia, próbowałem:

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

Ale powyższe nie działało. Mogłem jednoznacznie zidentyfikować ten element, ale wydaje mi się, że jest to trochę za dużo pracy, kiedy być może istnieje sposób, w jaki mogę uzyskać element zaraz po dodaniu go.

+0

Wystarczy dołączyć obsługi kliknięcia zanim go dołączyć. – Blazemonger

+1

możliwy duplikat [Jak mogę uzyskać odniesienie do węzła bezpośrednio po jego dołączeniu?] (Http://stackoverflow.com/questions/1162677/how-can-i-get-a-reference-to-a- node-bezpośrednio-po-it-is-is-appended) i [Access Elements After Append] (http://stackoverflow.com/q/5937019/218196). –

Odpowiedz

67

Można to zrobić:

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

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

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

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

Funkcja dołączania akceptuje dwa rodzaje argumentów: ciąg lub elementu jQuery. Jeśli łańcuch zostanie przekazany, utworzy element jQuery wewnętrznie i dołączy go do elementu nadrzędnego.

W tym przypadku użytkownik chce uzyskać dostęp do elementu jQuery samodzielnie, aby można było dołączyć procedurę obsługi zdarzeń. Więc zamiast podawać ciąg i pozwolić jQuery utworzyć element, musisz najpierw utworzyć element, a następnie przekazać go do funkcji dopełniającej.

Po wykonaniu tej czynności nadal masz dostęp do elementu jQuery, aby móc dołączyć obsługę.

+0

Podczas, gdy myślę, że '.on' jest najlepszym sposobem, aby to zrobić, faktycznie odpowiedział na pytanie! Dobra robota! – romo

+0

Dziękuję, działa bardzo dobrze! –

+0

Tak, to jest odpowiedź, aby umieścić $() wokół napisu, zanim go dodasz? Jakie jest rozumowanie i historia tutaj? – sheriffderek

0

dodawania tożsamość tej element następnie używać go w sposób następujący

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


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

Dlaczego nie zapisać odniesienie do nowego elementu, zanim je dołączyć:

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

Ostatnim elementem będzie nowy element

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

Możesz dołączyć zdarzenie do elementu podczas jego tworzenia -

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

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


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

Po prostu załóż uchwyt do klikania na kotwicę PRZED dołączeniem go.

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