2013-05-09 252 views
5

http://jsfiddle.net/YsnhT/2/jquery事件追加后不工作

jquery event on append后不工作。点击保存按钮后,我需要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由事件手) – 2014-03-02 19:17:38

回答

14

由于#save是动态创建的,请使用以下处理:

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

更新小提琴:http://jsfiddle.net/tymeJV/YsnhT/3/

你也应该让你的 “点击”像这样的按钮处理程序,否则它不会触发新的c重新编号为#click按钮。

+0

非常感谢,它像一个魅力。 – shashank 2013-05-09 13:16:08

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 2013-05-09 13:18:52

0

一旦你添加了元素,你需要重新绑定处理程序或使用jQuery的生活()函数,就像这样:

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

'live'似乎已被弃用。你必须用'on'来代替。像其他帖子所暗示的那样。 – 2013-05-09 12:49:44

0

检查这...

$('BTN“。)点击(函数(){

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

});