<tr onclick="removeAllDescendant(this)" parentid="@item.parentId" id="@item.id">
<td>
Use: <input type="checkbox" value="@item.iaId" />
Qty: <input type="text" class="width_100" />
</td>
<td>@item.location</td>
<td>@item.qty @item.uom</td>
<td>@item.createDt</td>
<td> </td>
<td> </td>
</tr>我动态地创建了这些表行,每一行都有parent-id和一个id。我想折叠所有后代行,当用户在行单击时。
这是javascript代码-
function removeAllDescendant(row)
{
var id = $(row).attr("id");
removeRows(row, id);
}
function removeRows(row, id) {
var tr = $(row).nextAll('tr [parentid=' + id + ']');
if (tr.length > 0) {
for (i = 0; i < tr.length; i++) {
id = $(tr[i]).attr("id");
alert(id);
removeRows(tr[i], id);
}
}
$(tr).remove();
}你们有没有看到这个递归函数中有任何bug,因为某些原因,如果我有超过3个级别,这个函数就不能工作了。
发布于 2012-12-13 02:14:59
在调试javascript代码后,我找到了问题的原因。我应该为每个递归调用定义变量(I)。所以修正后的代码是..。
function removeRows(row, id) {
var tr = $(row).nextAll('tr [parentid=' + id + ']');
if (tr.length > 0) {
for (var i = 0; i < tr.length; i++) {
var tempId = $(tr[i]).attr("id");
removeRows(tr[index], tempId);
}
}
$(tr).remove();
}现在完美地工作了:)
https://stackoverflow.com/questions/13823799
复制相似问题