克隆元素时我的键盘绑定有问题。这是场景:
我有一个像这样的html标记:
<tr class="rijbasis">
<td>
<input type="text" class="count" />
</td>
<td>
<span class="cost">10</span>
</td>
<td>
<span class="total">10</span>
</td>
</tr>
我正在将一个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函数不能对克隆行的输入元素起作用。
任何人都可以提供帮助或建议吗?我希望我足够清楚,如果需要解决这个问题,我肯定会添加细节。
问候
答案 0 :(得分:9)
你有两个真正的选项
clone(true)
,它还将克隆绑定的事件处理程序live()
一起使用,以便将事件处理程序绑定到父元素,从而新添加的行将获得相同的功能答案 1 :(得分:3)
使用jQuery的live events;这样处理程序将自动绑定到新创建的元素(例如示例中的克隆)。
例如:
$('.rijbasis input').live('keyup', function()
{
var parent = $(this).parent().parent();
$('.total',parent).text(parseInt($('.cost',parent).text()) * parseInt($('.count',parent).val()));
}
答案 2 :(得分:2)
使用.live
代替.keyup