Ваша проблема в том, что ключевое слово this
внутри обратного вызова относится к объекту окна, а не к элементу .data, как вы ожидаете.
Вы можете сделать что-то подобное ниже.
Я храню элемент во внешней области видимости, чтобы запомнить элемент, по которому щелкнули, чтобы мы могли получить доступ к его набору данных в обратном вызове.
$('.data').on('click', function(event){
// here im storing the element
// you can probalby also access it with $(this) and store it
const dataEl = event.target
axios.post('ajax/edit_groups/' + dataEl.dataset.id)
.then(function (response){
// in the callback I access the element that is in the outer scope
console.log("in: ", dataEl.dataset.id)
$('#editGroups').modal('show');
$('#id_group').val(response.data_group[0].id);
$('#name').val(response.data_group[0].group_name);
$('#desc').val(response.data_group[0].group_desc);
$('#inputRole').val(response.data_group[0].role);
}).catch(function (error){
console.log(error)
})
}
Примечание: я не сделал протестируйте код, просто чтобы показать, каким образом проблема может быть решена.
Возможно, вы захотите найти альтернативные способы. Вы можете использовать bind и некоторые другие методы при работе с this
.
Поскольку у вас есть элемент внутри тега привязки, вам нужно убедиться, что вы не фиксируете его события щелчка. Это связано с тем, что называется делегированием событий.
Один простой способ добиться этого - на самом деле CSS.
.data span { pointer-events: none; }
Есть и другие варианты.