2013-05-09 2 views
5

http://jsfiddle.net/YsnhT/2/JQuery событие не работает после добавления

Jquery мероприятие не работает после добавления. Мне нужно значение textarea после нажатия кнопки «Сохранить».

$('.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

Возможный дубликат [События, инициируемые динамически сгенерированным элементом, не захватываются обработчиком событий] (http://stackoverflow.com/questions/12829963/events-triggered-by-dynamically-generated-element-are-not-captured -by-event-hand) –

ответ

14

С #save создается динамически, используйте следующий обработчик:

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

Обновлено скрипку: http://jsfiddle.net/tymeJV/YsnhT/3/

Вы также должны сделать свой "нажмите кнопку" таким образом, иначе он не будет срабатывать при новом c reated #click кнопок.

+0

Большое спасибо, это работает как шарм. – shashank

1

сохранить создает динамически here.So пытаются с помощью on

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

Просто передать событие в динамичном формате:

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

И, возможно, сделать то же самое для:

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

Спасибо за ответ. – shashank

0

После того, как вы добавили элемент, вам нужно переустановить обработчики или использовать jQuery 'S жить функции(), например так:

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

'live' кажется устаревшим. вы должны пойти с 'on' вместо этого. как и другие сообщения. –

0

проверить это ...

$ (' BTN '.) Нажмите (функция() {

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

});.

Смежные вопросы