我是JQuery的新手,我正试图定义一个JQuery函数,目的是编辑表行:模态要求新值,然后该函数更新表行内容。但是,当我选择要编辑的行时,存储该行的变量会“累积”在同一对象中已编辑的所有先前行,并且当我尝试将新值更新为这一行时,所有接收前编辑的行将显示相同的值。为什么会这样?
我将向您显示代码:
$("#table").on("click", ".edit", function() {
var table = $("#table").DataTable();
var row = $(this).closest("tr");
//getting the <tr> content with Datatables API:
var values = $table.row(row).data();
$("#name").val(values[0]);
$("#surname").val(values[1]);
$("#city").val(values[2]);
$("#myModal .modal-footer").on("click", "#confirm", function() {
var newValues = []
//getting the <tr> content with Datatables API:
//this alert appears as many time as many rows have been changed
alert($table.row(row).data());
//deleting the old data from the server...
//getting the new values:
newValues.push($("#name").val());
newValues.push($("#surname").val());
newValues.push($("#city").val());
//adding the new date to the server...
$("#myModal").modal("hide");
//update the html table:
table.row(row).data([newValues[0], newValues[1], newValues[2]]);
});
});
正如我之前所解释的,.on("click")
中的变量“ row”
函数“累积”之前已编辑的所有行。
我以为这是一个作用域探针,所以我也尝试调用一个extern函数,该函数基本上执行相同的操作并利用了event.data
对象:
$("#confirm").on("click", {table: table, row: row}, edit);
但是没有运气。如果有人可以帮助我甚至给我一些建议或文档,将不胜感激。
答案 0 :(得分:0)
您必须使用两个不同的独立函数,这些函数使用外部变量进行连接;您不能以嵌套方式使用.on()