2011-10-12 133 views
0

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

我的问题是,只有第一个+将执行脚本,当新插入+ S被点击,什么都不会发生。我怀疑这是由于jquery没有正确地收听新添加的对象的事件。我尝试添加$(document).ready(function(){});我试着添加$(document).ready(function(){});几乎没有运气。

任何帮助表示赞赏。

由于提前,

回答

1

当你试图对事件做出反应的在DOM不存在的元素,当事件被束缚,你需要使用live()delegate()

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

或者与delegate()

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

参考文献:

+0

谢谢。这帮了很大的忙! – rickypai

+0

绝对受欢迎!我很高兴得到了帮助,并感谢*你*接受..! =) –

0

用途:

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

这是否帮助?