Jquery / Javascript:使用javascript动态添加的按钮不起作用

我有一个html的代码块:

Text
$(".addChunk").click(function(){create_chunk(this.parentNode)}) function create_chunk(after_this){ $(after_this).after(chunk_html) var i = 0 $("div.chunk").each(function(){$(this).attr('id', "chunk-" + i++)}) }

现在,这可以工作,但仅适用于在页面上静态呈现的.chunk。 当我按下按钮时,会出现第二个块,但该按钮不起作用。 如果我为两个或多个要添加的块添加html,每个都可以工作,但是它创建的块的按钮不会。 我该怎么办?

下面一行中的事件处理程序在您添加处理程序时将click事件附加到与选择器匹配的元素。

 $(".addChunk").click(function(){create_chunk(this.parentNode)}) 

您可以使用实时处理程序来执行此操作。 以下代码将解决您的问题

 $(".addChunk").live('click'. function(){create_chunk(this.parentNode)}); 

使用“live”jQuery函数。

 $(".addChunk").live('click'. function(){create_chunk(this.parentNode)}); 

问题是你绑定到单个元素。 “实时”选项将监视文档,以查看具有“.addChunk”类的元素的任何单击。

更换

 .bind() 

 .live() 

甚至更好用

 .delegate() 

在你的情况下:

 $('#chunk-1').delegate('.addChunk', 'click', function(){create_chunk(this.parentNode);}) 

此外,请访问www.jquery.com并阅读文档。