0

我有一个 Web 应用程序,它使用 jQuery 将行附加到表的末尾。每行都有一个文本区域来做笔记,还有一个编辑按钮,它会弹出一个窗口,以便输入更多信息。这样做的代码看起来像这样:http: //jsfiddle.net/H3m4z/

这是实际代码的精简版本,因为实际代码涉及 AJAX 调用,以便在添加时将每个表行中的数据保存到数据库中。rowID 在正确的脚本中是唯一的,因此我可以通过“notes [rowID]”引用每一行的文本区域。

当用户在编辑弹出窗口中输入更多信息时,这就是我所做的。输入的任何新注释都会保存到数据库中,但为了让 Web 应用程序感觉更“活跃”和响应,新注释会从编辑窗口复制到父表中相应的注释字段,如下所示:

window.opener.$('#notes[' + rowID + ']').text(newnotes);

这对于加载父页面时已经存在的行非常有效,例如我的示例中的第一个表格行。但是它不适用于由 jQuery 动态添加的表行。我猜答案涉及 live(); 不知何故,但我不确定在哪里或如何。

4

1 回答 1

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>,但您明白了。

于 2013-09-05T09:01:58.363 回答