如何使用jQuery访问动态创建的页面元素

时间:2013-09-05 08:55:38

标签: javascript jquery

我有一个使用jQuery将行附加到表末尾的Web应用程序。每行都有一个textarea来做笔记,还有一个编辑按钮弹出一个窗口,以便输入更多信息。执行此操作的代码如下所示:http://jsfiddle.net/H3m4z/

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

当用户在编辑弹出窗口中输入更多信息时,我就会这样做。输入的任何新笔记都会保存到数据库中,但为了使网络应用程序更加“实时”和响应,新笔记从编辑窗口复制到父表中相应的笔记字段,如下所示:

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

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

1 个答案:

答案 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>,但你明白了。