JQuery - Почему эта переменная не теряет своего значения после выполнения функции? - PullRequest
0 голосов
/ 02 апреля 2019

Я новичок в 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]]);
  });
});

Как я объяснял ранее, переменная "row" в .on("click") Функция «накапливает» все строки, которые были отредактированы ранее. Я думал, что это проблема объема, поэтому я также попытался вызвать функцию extern, которая в основном делала то же самое и использовала объект event.data:

$("#confirm").on("click", {table: table, row: row}, edit);

но без удачи. Если кто-нибудь сможет мне помочь или даже дать какой-нибудь совет или документацию, это будет очень ценно.

1 Ответ

0 голосов
/ 02 апреля 2019

Вы должны использовать две разные и независимые функции, используя внешнюю переменную для их соединения;вы не можете использовать .on () вложенным способом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...