#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. Это оно! Большое спасибо