2013-05-13 93 views
1

我想使用jQuery和html制作动态表。基本上,它所做的是,从输入的文本中追加一个新行,其中包含一个单元格的文本和另一个单元格中的删除按钮。但我的问题是,输入的点击事件没有触发。这里有添加和删除行动态生成的输入不工作

//Remove Row  
$('.remove-row').click(function() { 
    alert('Works!'); 
}); 

//Add Row 
$('.add-other-sources').click(function() { 
    var $text=$(this).parent().parent().find('.other-sources-input'); 
    var $table=$(this).parent().parent().parent().find('.other-sources-table') 
    $('<tr><td>'+$text.val()+'</td><td><input type="button" class="remove-row" value="x"/></td></tr>').fadeIn('slow').appendTo($table); 
    $text.val(""); 
}); 

从我能想出的网络检查的脚本,输入的标签显示了这样<input type="button" class="remove-row" value="x">。这与删除行事件不起作用有什么关系?

有没有人有任何想法如何解决这个问题?在此先感谢

回答

0

您需要委托的事件处理程序:

//Remove Row  
$('table').on("click", ".remove-row", function() { 
    alert('Works!'); 
}); 

的原因是正常的处理程序仅连接到已有的元素。使用委托处理程序时,点击会附加到父元素,但只有源代码从您指定的选择器冒泡时才会执行此功能。

+0

工程就像一个魅力。谢谢! – 2013-05-13 22:50:48

0

如果您想将事件附加到动态创建的元素,则需要委派事件

$(staticContainer).on('click', '.remove-row',function() { 

StatucContainer可以是始终存在于HTML中的任何容器。越接近有问题的元素,性能越好。