我有一个使用jQuery将行附加到表末尾的Web应用程序。每行都有一个textarea来做笔记,还有一个编辑按钮弹出一个窗口,以便输入更多信息。执行此操作的代码如下所示:http://jsfiddle.net/H3m4z/
这是实际代码的精简版本,因为实际代码涉及一个AJAX调用,用于在添加数据时将每个表行的数据保存到数据库中。 rowID在正确的脚本中是唯一的,所以我可以通过'notes [rowID]'来引用每一行的textareas。
当用户在编辑弹出窗口中输入更多信息时,我就会这样做。输入的任何新笔记都会保存到数据库中,但为了使网络应用程序更加“实时”和响应,新笔记从编辑窗口复制到父表中相应的笔记字段,如下所示:
window.opener.$('#notes[' + rowID + ']').text(newnotes);
这对于加载父页面时已经存在的行非常好,就像我的示例中的第一个表行一样。但是它不适用于由jQuery动态添加的表行。我猜这个答案涉及live();不知怎的,但我不确定在哪里或如何。
答案 0 :(得分:3)
使用on()
(替换live()
)来使用事件委派:
$('#table').on('click', 'td button', function(e){
});
或者您可以将您的html包装在jQuery函数中并立即绑定事件(简化示例):
var $tr = $('<tr><td>foo</td></tr>').on('click', function(e){
});
$tr.appendTo('#table');
这显然会将事件绑定到实际的<tr>
,但你明白了。