函数绑定和clone()函数 – Jquery

克隆元素时我的keyup绑定有问题。 这是场景:

我有一个这样的HTML标记:

     10   10   

我正在将keyup函数绑定到我的表行的input元素,如下所示:

 $('.rijbasis input').keyup(function(){ var parent = $(this).parent().parent(); $('.total',parent).text(parseInt($('.cost',parent).text()) * parseInt($('.count',parent).val())); } 

我设计了这样的函数,所以我可以在onclick事件上克隆表行并将其附加到tbody:

 $('.lineadd').click(function(){ $('.contract tbody').append($('.contract tbody tr:last').clone()); $('.contract tbody tr:last input').val("0"); }); 

这可以工作,但是keyup函数不能对克隆行的输入元素起作用。

有人可以提供帮助或建议吗? 我希望我足够清楚,如果需要解决这个问题,我肯定会添加细节。

问候

你有两个真正的选择

  • 使用clone(true) ,它也将克隆绑定的事件处理程序
  • 使用带有live()事件委托,以便将事件处理程序绑定到父元素,因此新添加的行将获得相同的function

使用jQuery的直播活动 ; 这样处理程序将自动绑定到新创建的元素(例如示例中的克隆)。

例如:

 $('.rijbasis input').live('keyup', function() { var parent = $(this).parent().parent(); $('.total',parent).text(parseInt($('.cost',parent).text()) * parseInt($('.count',parent).val())); } 

使用.live而不是.keyup