我正在尝试编写一个由表行组织的动态表单。只要用户单击+,就会插入一行新输入。为简单起见,我删节了代码:
<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(){});运气不好。
感谢任何帮助。
提前致谢,
答案 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>');
});
这有帮助吗?