2012-02-22 12 views
9

używam funkcji dołączania aby nie dodać div do innego elementudostęp jquery elementem po funkcji dopisywania

('#test-append').append("<div class='new_div'><b>some text</b></div>") 

wszystko idzie dobrze i widzę dodaną div, `ale też trzeba potem do dostępu selektor div, aby coś z tym zrobić dział na przykład ukryć to więc używam folowing

$('.new_div').click(function(){ 
      do somthing here 
     }); 

ale to nie działa, nawet jeśli po prostu użyć prostego alert („hi”) połączeń. Wydaje się jQuery nie rozpoznaje klasę append (ja też próbowałem z Id i uzyskać ten sam wynik)

będę wdzięczny za pomoc w tej sprawie

Dzięki

Odpowiedz

16

przed jQuery 1.7 potrzebne do korzystania na żywo() lub delegat(), aby powiązać zdarzenia do elementów ignorowanie czy istniały one w czasie wiązania, czy nie.

od jQuery 1.7, można użyć

$('root-element').on('click', 'selector', function() { do it }) 

powyżej edytowane zgodnie JASPERS komentuje

+2

Jeśli dołączono jQuery 1.7, to '.click (...)' odwzorowuje na '.on (" kliknięcie ", ...)' – Jasper

+0

'bind()' nie używa delegacji zdarzeń, więc będzie wiązać tylko elementy, które są obecnie w DOM, gdy wiązanie ma miejsce. I używasz '.on()' tak jak '.bind()', więc nie będzie delegować zdarzenia, aby użyć '.on()' musi być w tym formacie: '$ ('root- element '). on (' click ',' selector ', function() {do it}) '. – Jasper

+0

Ktoś usunąć tę kiepską odpowiedź ... @ Jasper, dzięki, może powinieneś opublikować ten komentarz jako odpowiedź? – mindandmedia

0

Prawdopodobnie zadeklarować div najpierw użyj następnie dodaj do.

var newDiv=$("<div class='new_div'><b>some text</b></div>"); 

newDiv.appendto('#test-append'); 

newDiv.click(function(){ do somthing here }); 
+0

Próbowałem, ale to nie działało, czy próbowałeś? –

3

Można dołączyć element, a następnie wybierz ją, jak to będzie elementem podrzędnym pierwotnego wyboru:

$('#test-append').append("<div class='new_div'><b>some text</b></div>").children('.new_div').click(...); 

Albo można użyć .appendTo() który dołącza element (y), ale również utrzymuje im wybrany:

$("<div class='new_div'><b>some text</b></div>").appendTo('#test-append').click(...); 

Albo jak inni stwierdzili można zapisać odniesienie do elementu w zmiennej, a następnie użyć tej zmiennej w późniejszym czasie do manipulowania elem ENT: ty

var $element = $("<div class='new_div'><b>some text</b></div>").appendTo('#test-append'); 
$element.click(...);//but you could have just chained the call like the previous example 
+0

Po kilku godzinach debugowania nie zauważyłem czegoś tak prostego, jak ".appendTo(), który dołącza element (e), ale także utrzymuje je wybrane". Jasper, naprawdę uratowałeś mój dzień! –

0

Może nie jest to zalecana metoda ... ale to działa (jQuery 2.1.3)

$('.current_element').append("<div class='future_element'><b>some text</b></div>").find('.future_element').click(function(){ 
    console.log('you can see me if you click appended element'); 
}); 

wersja i kiedy dołączyć elementu na kliknięcia

$('.current_element').click(function(){ 
    $('body').append("<div class='future_element'>anything</div>"); 
    $('.future_element').click(function(){ 
     $(this).text('do something with appended element'); //for example 
    }); 
}); 
Powiązane problemy