从表中获取索引(tr没有ID)

时间:2011-04-27 18:59:47

标签: javascript jquery dom dynamic html-table

我正在使用以下代码动态创建并附加到表<tr><td>中:

$("#table1").append(
        '<tr>'+
        '<td style="cursor:pointer" onclick="pass.data.carregar(this.parentNode.rowIndex-2);">'+$("#DRVR_NAME").val()+'</td>'+
                    '</tr>');

到目前为止还可以:我可以将Td数据加​​载到我想要的其他字段中,并且创建它没有问题。

但除了创建它之外,我必须允许用户动态删除<td>,但正如您所看到的,没有要查找的ID。允许用户删除<td>

的更好方法是什么

我正在尝试以下代码:

$("#table1>tbody>td>tr."+teste+"").remove();

但没有成功!测试变量是我自动为寄存器定义的数字。

有任何帮助吗?

4 个答案:

答案 0 :(得分:2)

如果test是您要删除的行的从0开始的索引...

$("#table1>tbody>tr:eq("+test+")").remove();

答案 1 :(得分:0)

动态创建每个单元格时设置唯一的id属性。

<tr id="uniqueID"><td>Cell Content</td></tr>

然后使用简单的jquery按id删除行。

$('#uniqueID').remove(); 

答案 2 :(得分:0)

您可以在每个驱动程序名称旁边添加一个小x,通过更改您的代码来删除该td:

$("#table1").append('<tr>'+'<td style="cursor:pointer" onclick="pass.data.carregar(this.parentNode.rowIndex-2);">'+$("#DRVR_NAME").val()+'<span onclick="$(this.parentNode).remove()">x</span></td>'+'</tr>');

或者您可以向绑定到每个<td>的点击处理程序添加另一个函数,该处理程序将在预定义的<div>中显示一条消息,询问用户是否要删除该元素:

$("#table1").append('<tr>'+'<td style="cursor:pointer" onclick="pass.data.carregar(this.parentNode.rowIndex-2);askDelete(this);">'+$("#DRVR_NAME").val()+'</td>'+'</tr>');

然后在HTML中的某处定义一个消息区域(id ='messageArea'),并在代码中定义以下函数:

askDelete(el){
    var MA=$('#messageArea');
    MA.empty();
    MA.html('Do you want to delete ' + el.innerHTML + '?<br>').append('<span id="confirmDelete">delete</span>&nbsp;<span id="cancelDelete">cancel</span>')
    MA.find('#confirmDelete').click(function(){$(el).remove();});
    MA.find('#cancelDelete').click(function(){MA.empty();})
}

然后根据需要设置删除和取消按钮的样式。

答案 3 :(得分:0)

您的删除代码假设TD上有一个类。你必须使用:eq()通过引用隐藏字段中的值来定位它。如果隐藏字段中的值是一个数字(用户选择的td的索引=您的计数器),您可以尝试这样的事情:

var hiddenFieldValue = $('input.hiddenFieldClassName').val();

$("#table1>tbody>tr>td:eq("+hiddenFieldValue+")").remove();