我有jquery生成的表行,因为它们是动态生成的,我会使用任何带有.live方法的选择器来绑定事件。但是在绑定我的事件之后我想追加更多行,所以我正在使用像这样的.after方法。
$("#addItem").live("click", function (e, index) {
$('#myTable tbody > tr:last').after('<tr><td>' + Contenet + '</td></tr'>);
});
问题是after方法似乎没有识别JQuery本身生成的表行,但是当我用纯html行测试它时工作得很好。所以我想知道是否有一种类似于live的方法我可以使用而不是之后或任何解决方法?
答案 0 :(得分:1)
live
在jQuery 1.7中已弃用,已在jQuery 1.9中删除。
如果您使用的是jQuery 1.7及更高版本,则应使用.on
代替。
jQuery文档中的片段:
事件处理程序仅绑定到当前选定的元素;他们 在您的代码调用.on()时,页面上必须存在。 要确保元素存在且可以选择,请执行事件 绑定在文档就绪处理程序中的元素 页面上的HTML标记。 如果将新HTML注入页面, 选择元素并在新HTML之后附加事件处理程序 放入页面。或者,使用委派事件来附加事件 处理程序,如下所述。
委派事件的优势在于它们可以处理来自的事件 稍后添加到文档中的后代元素。通过 选择一个保证在当时存在的元素 委托事件处理程序附加,您可以使用委托事件 避免频繁附加和删除事件处理程序的需要。这个 element可以是a中视图的容器元素 例如,模型 - 视图 - 控制器设计,或者如果事件是文档 handler希望监视文档中的所有冒泡事件。该 文档元素在之前的文档头部中可用 加载任何其他HTML,因此可以安全地在那里附加事件 等待文件准备好。
除了能够处理后代元素的事件外 尚未创建,委托事件的另一个优势是他们的 当许多元素必须存在时,开销要低得多 监控。在此示例中,在其tbody中包含1,000行的数据表中 将处理程序附加到1,000个元素:
$("#dataTable tbody tr").on("click", function(event){
alert($(this).text()); });委托事件方法附加一个 事件处理程序只需要一个元素,tbody和事件 冒泡一级(从点击的tr到tbody):
<强>
$("#dataTable tbody").on("click", "tr", function(event){
强>
alert($(this).text()); });注意:委派事件不适用于SVG。
要删除与.on()
绑定的事件,请参阅`.off()'。
答案 1 :(得分:0)
尝试使用TBODY中的append,它总是将代码注入最后一行
$('#myTable tbody').append('<tr><td>' + Content + '</td></tr'>);
如果必须将任何方法绑定到行,则可以使用委托事件。
像这样:
function Method1(oRow)
{
console.log(oRow);
}
$('#myTable tbody').on('click','tr',function(){
Method1(this);
});
这将适用于tbody中的每一行,因为我将tbody设置为检测点击的永久引用。
答案 2 :(得分:0)
我不确定这是不是你想要的。 http://jsfiddle.net/qjbB7/
HTML: 添加
<table id="myTable">
<tbody>
<tr><td>1</td></tr>
<tr><td>1</td></tr>
<tr><td>1</td></tr>
</tbody>
</table>
JS:
$("#add").click(function addRow(){
$('#myTable tbody > tr:last').after('<tr><td>text</td></tr>');
});