gpt4 book ai didi

javascript - 无法访问关闭的 jQuery 对象的方法

转载 作者:行者123 更新时间:2023-11-29 15:03:43 24 4
gpt4 key购买 nike

我有这样一个功能:

var eatLunch = (function () {
var sandwiches = [$("#sand1"), $("#sand2")];

return function (eaten) {
for (var i = 0, len = eaten.length; i < len; i++) {
sandwiches[i].attr("class", "eaten-by " + eaten[i].by)
}
};
}());

eatLunch([
{
result: "good",
by: "Adam"
},
{
result: "meh",
by: "Adam"
}
]);

目的是将 dom 元素 #sand1 和 #sand2 缓存在闭包中,以减少此函数必须进行的 dom 接触次数。如果没有闭包,每次调用函数时都必须将元素分配给变量。

但是attr方法好像不行。经过进一步检查,定义了 sandwiches[i],并且它具有 attr 方法。该函数不会抛出错误,它只是不断循环,但不会更新 dom 元素。

如果我将 sandwich 移动到本地范围内,它会完美运行,但这样会更昂贵。见下文:

var eatLunch = function (eaten) {
var sandwiches = [$("sand1"), $("sand2")];

for (var i = 0, len = eaten.length; i < len; i++) {
sandwiches[i].attr("class", "eaten-by " + eaten[i].by)
}
};

eatLunch([
{
result: "good",
by: "Adam"
},
{
result: "meh",
by: "Adam"
}
]);

这是怎么回事?

最佳答案

您可能在加载 DOM 之前运行您的代码。

将其移至页面底部。

关于javascript - 无法访问关闭的 jQuery 对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6064409/

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