после звонка с Axios хочу заменить текущий пункт на новый. Я поступаю так:
var replacedElement = "<span class='float-right' aria-hidden='true'>" +
"<i class='fas fa-check icon-color'></i>" +
"</span>";
axios.post(url).then(function (response) {
$(this).replaceWith($.parseHTML(replacedElement));
});
Но у меня следующая ошибка: Uncaught (in promise) TypeError: Cannot read property 'createDocumentFragment' of undefined
Мой $(this) ссылается на элемент span:
Так что я не понимаю, почему у меня эта ошибка
Ты прав. Когда я сделал console.info ($(this)), я сделал это до вызова axios. Молодец и спасибо! :)
Я добавил правильный ответ с парой решений и ссылкой для понимания того, как рассчитывается this.



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


Кажется, это ошибка, связанная с this, а не с ошибкой jQuery. Вы можете проверить, как рассчитывается this на этом другом ответе, который я опубликовал.
Есть 3 простых способа решить вашу проблему.
this в переменной (обычное имя self)var self = this;
axios.post(url).then(function(response) {
$(self).replaceWith($.parseHTML(replacedElement));
});
this не изменитсяaxios.post(url).then((function(response) {
$(this).replaceWith($.parseHTML(replacedElement));
}).bind(this));
arguments и this (не будут работать в старых браузерах)axios.post(url).then((response) => $(this).replaceWith($.parseHTML(replacedElement)));
Вы добавили
console.info(this)внутрь функцииthen, потому что я уверен, чтоthisне будет ссылаться на один и тот же объект? Если это проблема, попробуйте сохранитьthisв переменной типаvar self = thisи использоватьselfвместоthisвнутри функцииthen.