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 种简单的方法可以解决您的问题。
- 将
this
存储在变量中(常用名称为self
)
var self = this;
axios.post(url).then(function(response) {
$(self).replaceWith($.parseHTML(replacedElement));
});
- 使用
Function#bind
确保this
不会改变
axios.post(url).then((function(response) {
$(this).replaceWith($.parseHTML(replacedElement));
}).bind(this));
- 使用不改变
arguments
和 this
的 Arrow Functions(不适用于旧版浏览器)
axios.post(url).then((response) => $(this).replaceWith($.parseHTML(replacedElement)));
在与 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 种简单的方法可以解决您的问题。
- 将
this
存储在变量中(常用名称为self
)
var self = this;
axios.post(url).then(function(response) {
$(self).replaceWith($.parseHTML(replacedElement));
});
- 使用
Function#bind
确保this
不会改变
axios.post(url).then((function(response) {
$(this).replaceWith($.parseHTML(replacedElement));
}).bind(this));
- 使用不改变
arguments
和this
的 Arrow Functions(不适用于旧版浏览器)
axios.post(url).then((response) => $(this).replaceWith($.parseHTML(replacedElement)));