获取动态创建行的id

Getting id of dynamically created row

本文关键字:id 创建 动态 获取      更新时间:2023-09-26

在id为productTable的表中,我使用以下jquery代码添加行:

$('#productTable').html("");
for (var i = 0; i < result.count; i++) 
{
        $('#productTable').append('<tr id=' + result.productArray[i].productID + 'class="product"><td><a> '+result.productArray[i].productName+'</a></td></tr>');
}

和我附加一个处理程序到这些行使用:

$("#productTable").on("click","tr",function(event){
                alert(this.id);
            });

但我得到的ID是表的而我想要的是被点击行的ID

帮助

问题是你所附加的是无效的HTML

$('#productTable').append(
    '<tr id=' + result.productArray[i].productID + 'class="product">
         <td>
             <a> '+result.productArray[i].productName+'</a>
         </td>
     </tr>'
);

请仔细查看,ID周围没有引号,ID和类之间也没有空格分隔。
基本上你最后会得到

<tr id=idclass="product">
     <td>
         <a>text</a>
     </td>
 </tr>

正确的代码是

$('#productTable').append('<tr id="' + result.productArray[i].productID + '" class="product"><td><a> '+result.productArray[i].productName+'</a></td></tr>');

Try This:

$('#productTable').html("");
for (var i = 0; i < result.count; i++) 
{
    var obj = $('<tr id=' + result.productArray[i].productID + 'class="product"><td><a> '+result.productArray[i].productName+'</a></td></tr>');
    $(obj).click(function(event){
        alert($(this).attr("id"));
    });
    $('#productTable').append(obj);
}

在动态创建元素时绑定事件。这是你想做的另一种方法。

$('#productTable').html("");
for (var i = 0; i < result.count; i++) 
{
    $('#productTable').append('<tr id=" + result.productArray[i].productID + " class="product"><td><a> '+result.productArray[i].productName+'</a></td></tr>');
    $('#'+result.productArray[i].productID).bind('click',function(){
       //put your code here
    });
}
<标题>演示