jQuery - 无法使用 replaceWith() 函数 - 无法读取未定义的 属性 'createDocumentFragment'

jQuery - Can't use replaceWith() function - Cannot read property 'createDocumentFragment' of undefined

在与 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 元素:

所以我不明白为什么会出现这个错误

这似乎是一个 this 相关错误,而不是 jQuery 错误。您可以检查 this 是如何根据此 .

计算的

有 3 种简单的方法可以解决您的问题。

  1. this存储在变量中(常用名称为self
var self = this;
axios.post(url).then(function(response) {
  $(self).replaceWith($.parseHTML(replacedElement));
});
  1. 使用Function#bind确保this不会改变
axios.post(url).then((function(response) {
  $(this).replaceWith($.parseHTML(replacedElement));
}).bind(this));
  1. 使用不改变 argumentsthisArrow Functions(不适用于旧版浏览器)
axios.post(url).then((response) => $(this).replaceWith($.parseHTML(replacedElement)));