jquery侦听新添加的对象的事件

时间:2011-10-12 08:55:59

标签: jquery

我正在尝试编写一个由表行组织的动态表单。只要用户单击+,就会插入一行新输入。为简单起见,我删节了代码:

<table id="test">
<tr>
    <td>
        <a class="addrow" href="javascript:void(0);">+</a>
    </td>
</tr>
</table>
<script>
$('.addrow').click(function () {
    $("#test tr:last").after('<tr><td><a class="addrow" href="javascript:void(0);">+</a></td></tr>');
});
</script>

我的问题是只有第一个+会执行脚本,而当点击新插入的时间时,没有任何反应。我怀疑这是因为jquery没有正确地监听新添加的对象的事件。

我尝试添加$(document).ready(function(){});运气不好。

感谢任何帮助。

提前致谢,

3 个答案:

答案 0 :(得分:1)

当您在绑定事件时尝试对DOM中不存在的元素的事件作出反应时,您需要使用live()delegate()

$('.addrow').live('click',function(){ /* click handler in here */ })

delegate()

$('#table').delegate('.addrow','click',function(){ /* click handler in here */ });

参考文献:

答案 1 :(得分:0)

我不确定我是否理解这个问题,但您可以使用live for DOM为dom加载后添加的元素绑定事件,请参阅http://api.jquery.com/live/

答案 2 :(得分:0)

使用:

$('.addrow').live('click', function () {
    $("#test tr:last").after('<tr><td><a class="addrow" href="javascript:void(0);">+</a></td></tr>');
});

这有帮助吗?