2013-05-09 16 views
5

http://jsfiddle.net/YsnhT/2/zdarzenie jQuery nie działa po dołączyć

zdarzenie jQuery nie działa po dopisywania. Potrzebuję wartości textarea po kliknięciu przycisku zapisu.

$('.span8') 
    .on('click', 
      '.btn', 
      function() { 
     var input = $("#textarea").val(); 
     alert(input); 
    }); 

$('body').on('click','#createNote',function() {    $('.span8').empty(); 
       $('.span8').append('<button type="button" class="btn" style="float: right; margin-right: 8px;background-color:#dddddd;font-family:Roboto Slab;color: black" id="save" data-loading-text="Saving...">Save</button><div class="hero-unit"><input type="text" style="width: 100%" id="title" placeholder="Title"/>'+ 
       '<textarea contenteditable="true" id="textarea" class="textarea" placeholder="Enter text ..."style="width: 100%;">dd</textarea></div>'); 

      }); 

HTML:

<div class="span8"></div> 
+0

Możliwy duplikat [Zdarzenia wywoływane przez dynamicznie generowany element nie są przechwytywane przez procedurę obsługi zdarzeń] (http://stackoverflow.com/questions/12829963/events-triggered-by-dynamicznie- generowane-element-za-niezapisane -by-event-hand) –

Odpowiedz

14

Od #save są tworzone dynamicznie, należy użyć następującego Handler:

$(document).on('click', '#save' ,function() { 
    //do stuff 
}); 

Updated skrzypce: http://jsfiddle.net/tymeJV/YsnhT/3/

Należy również sprawdzić swój "klik" obsługi przycisku w ten sposób, inaczej nie będzie świecić na nowo anulowane przyciski #click.

+0

Wielkie dzięki, działa jak urok. – shashank

1

Zapisz tworzy dynamicznie here.So starają się za pomocą on

$(document).on('click', '#save' ,function() { 
}); 
3

Wystarczy przekazać zdarzenia w formacie dynamiczna:

$(document).on('click', '#save' ,function() { 
    //do stuff 
}) 

I może zrobić to samo dla:

$(document).on('click', '#click' ,function() { 
    //do stuff 
}) 
+0

Dzięki za odpowiedź. – shashank

0

Po dodaniu elementu należy ponownie powiązać obsługę z nim lub użyć jQuery 'S żyć funkcji(), tak jak poniżej:

$('.span8 .btn').live('click', function() { 
    var input = $("#textarea").val(); 
    alert(input); 
}); 
+0

'live' wydaje się być przestarzałe. musisz iść z 'on' zamiast tego. tak jak sugerują inne posty. –

0

sprawdzić to ...

$ (' btn ".) Kliknij (function() {

var input = $("#textarea").val(); 
    alert(input); 

});.

Powiązane problemy