В настоящее время я работаю над онлайн-проектом, который представляет собой игру Таро (карточная игра) в одностраничном приложении. И дело в том, чтобы играть, игроку нужно щелкнуть по карте, которая в моем случае представляет собой img, и он должен выполнить функцию, получая данные, которые я вставил ранее, когда я динамически генерировал карты.
Однако, когда я пытаюсь щелкнуть, функция вызывает функцию, но вместо ожидаемых данных я получаю console.info () undefined.
Вот мой код для создания карты:
let ajouterImageCarte = function (carte, destination) {
let img = $('<img />');
$(destination).append(
img.attr("src", carte.url)
.attr("class", "imageCarte")
.data("valeur", carte.valeur)
.data("couleur", carte.couleur)
.data("nom", carte.nom)
.click(clickImgage)
);
};А вот функция, вызываемая после щелчка:
let clickImgage = function () {
$.ajax({
url: '/php/json/getTourEtatJeu.php'
})
.done(function (dataEtat) {
if (dataEtat.isMonTour && "chien" === dataEtat.etatPartie) {
console.info("yes");
if (1<2) {
let nom = $(this).data("nom");
console.info(nom);
let carte = new Carte(nom);
chien.push(carte);
$(this).fadeOut(function () {
let img = $('<img />');
$('#plateau').append(
img.attr("src", carte.url)
.attr("class", "imageCarte")
.data("valeur", carte.valeur)
.data("couleur", carte.couleur)
.data("nom", carte.nom)
.click(clickImgage)
);
})
}
else {
console.info("no");
}
}
else if (dataEtat.isMonTour && "jeuEnCours" === dataEtat.etatPartie) {
}
})
.fail(function () {
alert("Problème survenu lors du clic sur une carte !!");
});
return false;
};Важная часть функции находится в начале, после вызова ajax, где я пытаюсь выполнить console.info (nom), который имеет значение let nom = $ (this) .data ("nom") ;.
Я уже пробовал кое-что и просматривал вопросы о переполнении стека и другие веб-сайты, но мне не удалось найти ответа на эту странную проблему. Кроме того, мне действительно нужна помощь прямо сейчас, потому что мне нужно закончить этот проект сегодня, и это единственное, что не работает.
Заранее спасибо :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


есть некоторые непонятные мне проблемы с извлечением методом .data() с помощью jquery
.data().attr("data-valeur") с опцией 'data'.dataset из элемента htmlВ вашем обратном вызове this не ссылается на изображение, по которому щелкнули, как вы ожидали. Смотрите ответы здесь: $ (this) внутри успеха AJAX не работает
Спасибо, я собираюсь проверить это
Хорошо, спасибо, теперь он работает после добавления контекста в ajax. Ты спас мне день;)
попробуйте
.attr("data")