在动态创建时单击按钮

时间:2013-09-23 11:44:16

标签: jquery

我有两个按钮类,点击后,我想要发生一些事情。

我有:

$('.btn-comment, .btn-youtube').click(function(){

当按钮是静态的时,这用来工作。它们现在是临时创建的。

我试过这个:

$('.btn-comment, .btn-youtube').on('click', function(){

但没有运气。

3 个答案:

答案 0 :(得分:1)

这不是它的工作原理。 您应该将委托添加到父元素。那个将要遭受修改的人。

您可以使用整个文档:

$(document).on('click', '.btn-comment, .btn-youtube', function(){ ... });

但最好用修改后的元素来做。

答案 1 :(得分:1)

您需要在常见的静态祖先(最差情况document上注册处理程序,但越接近越好)然后对委派的处理程序使用新的.on语法,例如:

$(document).on('click', '.btn-comment, .btn-youtube', function() { 
     ...
});

答案 2 :(得分:0)

查看.on()的jQuery文档。 你需要使用:

$('body').on('click', '.btn-comment, .btn-youtube', function(){ ... });

代码的问题在于,如果动态插入.btn-comment, .btn-youtube,那么在您尝试附加事件处理程序时,它们可能不存在。 上面的代码行将处理程序附加到body,但仅由匹配第二个参数('.btn-comment, .btn-youtube')的元素触发。

理想情况下,您将'body'替换为插入新元素的最近祖先。