该程序有两个javascript函数来生成一个表(generateTable
)并删除一个选定的行(deleteOneRow
)。
generateTable
函数根据服务器数据生成表。每行采用以下格式:
<tr><td><span class="desc">aaa</span><a href="#delete_choice" class="delete-choice">Delete</a></td> </tr>
基本上,每一行都是一些文字,后跟一个“删除”链接。
当脚本完成表生成时,它会调用$(".delete-choice").click(deleteOneRow)
来将click绑定到事件处理程序。
在事件处理函数deleteOneRow
中,它首先只删除表中的所有行。然后再次调用generateTable
以显示剩余的数据条目。代码结构如下:
function deleteOneRow() {
var choiceIdx = ... //get index
$(".delete-choice").unbind('click');
CurrentChoices.splice(choiceIdx, 1); // remove the entry from the array
$("#problem-choice-table tr").each(function(){ // delete the DOM entries
$(this).remove();
})
generateTable();
}
如果表有两行,单击第一行中的删除链接后,第一行被删除。然后它生成一个表格,第二行移动到第一行。但是,再次调用deleteOneRow
,最后删除第2行。
我猜这是因为事件多次被触发。我试过unbind,stopPropagation等等。没有任何作用。