在JQuery生成的元素上使用JQuery .after方法

时间:2013-08-26 11:32:00

标签: jquery html

我有jquery生成的表行,因为它们是动态生成的,我会使用任何带有.live方法的选择器来绑定事件。但是在绑定我的事件之后我想追加更多行,所以我正在使用像这样的.after方法。

$("#addItem").live("click", function (e, index) {    
    $('#myTable  tbody > tr:last').after('<tr><td>' + Contenet + '</td></tr'>);
});

问题是after方法似乎没有识别JQuery本身生成的表行,但是当我用纯html行测试它时工作得很好。所以我想知道是否有一种类似于live的方法我可以使用而不是之后或任何解决方法?

3 个答案:

答案 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>');
});