获取动态创建的行的id

时间:2014-05-04 15:25:54

标签: javascript jquery

在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。

帮助

3 个答案:

答案 0 :(得分:3)

问题在于您要附加的内容,它是无效的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>');

答案 1 :(得分:0)

试试这个:

$('#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);
}

答案 2 :(得分:0)

Bind 动态创建元素时的事件。这是另一种做你想做的事情。

$('#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
    });
}

Demo