【发布时间】:2011-03-06 16:54:13
【问题描述】:
我有一个 setTimeout 调用:
if ($cardOne instanceof jQuery){
setTimeout(function() {
resetCard($cardOne);
}, 1000);
$cardOne = "";
}
调用这个函数:
function resetCard($card){
$card.removeClass('show');
}
这会导致这个错误:
表达式 '$card.removeClass' [undefined] 的结果不是函数。
我不确定这意味着什么。 setTimeOut 是否想要某种返回值?我已经验证 $card 确实是一个 jQuery 对象(在本例中是一个 DIV)。
更新:
我在上面添加了更多示例代码来指出我做错了什么。 Pointy 让我意识到,当调用 removeClass 时,问题在于 $card 不是 jQuery 对象。
如果您查看我的示例代码,事后看来我做错了什么现在很明显......我在 setTimeout 内调用该函数,然后立即将 $cardOne var 设置回空字符串。因此,到 setTimeout 调用该函数时,var 已被重置,不再是 jQuery 对象。
修复方法是将对象的设置移动到一个空字符串到 resetCard 函数中。
【问题讨论】:
-
您确定它是一个 jQuery 对象,而不仅仅是对
<div>DOM 元素的引用吗? -
你有没有试过在resetCard中显示$card的值,它显示什么?
-
在 resetCard 函数中尝试
console.dir($card);。 -
@DA 如果它是一个 jQuery 对象,那么就会有一个“removeClass”函数...
-
@DA 确定它是否是 jQuery 实例对象的最简单方法是
console.dir()它。然后你可以打开你的控制台并检查记录的对象是否包含the properties of a jQuery instance object。
标签: javascript jquery settimeout