gpt4 book ai didi

javascript - 为什么 jQuery 会出现此函数作用域错误?

转载 作者:行者123 更新时间:2023-11-28 12:04:20 25 4
gpt4 key购买 nike

我有以下功能:

function updateStatuses() {
$.each($('.status-badge'), function (i, value) {
value.removeClass('badge-known');
});
$.post("/Diagnostics/Update", { }, function(data) {
$.each(data, function() {
setStatus(this.Id, this.Infos, this.Errors, this.Warnings);
});
});
window.setTimeout(function () {
$.each($('.status-badge:not(.badge-known)'), function(i, value) {
value.addClass('badge-unknown');
});
}, 1000);
}

基本上,我正在通过 AJAX 调用更新一组徽章。如果 1000 毫秒后,任何特定徽章尚未更新,它将获得 badge-unknown 类。

上面的函数是这样调用的:

$(function () { updateStatuses(); });

我的问题是 value.removeClass('badge-known'); 给出以下错误:

TypeError: value.removeClass is not a function

如果我注释掉该行,超时函数会在 value.removeClass('badge-unknown'); 上引发相同的错误

令人困惑的是,addClassremoveClasssetStatus中使用,它定义在上述函数的正下方。我在这里做错了什么?

最佳答案

调用标准 jQuery 方法时无需使用 .each。大多数此类方法都会愉快地直接迭代一组元素。

此外,主 document.ready 处理程序不需要匿名函数包装器:

你的整个代码可以是这样的:

function updateStatuses() {
$('.status-badge').removeClass('badge-known');

$.post("/Diagnostics/Update", { }, function(data) {
$.each(data, function() {
setStatus(this.Id, this.Infos, this.Errors, this.Warnings);
});
});

window.setTimeout(function () {
$('.status-badge:not(.badge-known)').addClass('badge-unknown');
}, 1000);
}

$(updateStatuses);

关于javascript - 为什么 jQuery 会出现此函数作用域错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com