Множественные вызовы функции JS с параметрами

#javascript

#javascript

Вопрос:

У меня есть функция JS, которая редактирует значения входных данных fill.

Я извлекаю входное значение по идентификатору, который является параметром функции, и функции вызываются по щелчку мыши.

Моя проблема в том, что когда я нажимаю, чтобы отредактировать первый ввод, он работает, но затем я хочу отредактировать третий .. он редактирует первый и третий?

Как я могу сбросить настройки своих функций, чтобы редактировать только третью?

Вот моя JS-функция

 function editTicket(id) {
let toEdit = id;
document.getElementById("inputRow"   toEdit).style.backgroundColor = "#6C63FF";
document.getElementById("inputRow"   toEdit).style.color = "#fff";
$("#imgtoCenter").click(function (e) {

    var offset = $("#imgtoCenter").offset();
    var relativeX = (e.pageX - offset.left);
    var relativeY = (e.pageY - offset.top);

    sessionStorage.removeItem('x'   toEdit);
    sessionStorage.removeItem('y'   toEdit);
    document.getElementById("inputRow"   toEdit).style.backgroundColor = "#fff";
    document.getElementById("inputRow"   toEdit).style.color = "#000";
    sessionStorage.setItem('x'   toEdit, Math.round(relativeX));
    sessionStorage.setItem('y'   toEdit, Math.round(relativeY));
    document.getElementById("x"   toEdit).value = sessionStorage.getItem('x'   toEdit);
    document.getElementById("y"   toEdit).value = sessionStorage.getItem('y'   toEdit);
});
  

}

Если я использую console.log (id), я получу значение моего последнего клика и нового.

Спасибо .. !

Ответ №1:

В jQuery нажмите documentation

Дополнительные примечания: Поскольку метод .click() является просто сокращением для .on ( «щелчок», обработчик ), отсоединение > возможно с помощью .off ( «щелчок»).

Каждый раз, когда вы вызываете editTicket метод, вы прикрепляете событие click к #imgtoCenter элементу. Все эти события нажатия накапливаются в элементе, и когда вы нажимаете на #imgtoCenter , все обработчики запускаются с предыдущими идентификаторами, которые они сохранили.

Просто $("#imgtoCenter").off('click') в конце editTicket метода.

Комментарии:

1. Это оно! Большое спасибо