【发布时间】:2010-01-30 05:05:57
【问题描述】:
jquery 很新,我写的函数有点问题,与this 问题非常相似,如果还有什么要继续的话,那么显然我有一个闭包问题。 正如 Peter Bailey 在上述线程中所说,这就是正在发生的事情:
- 迭代一些值
- 在使用迭代变量的迭代中定义/分配一个函数
- 您了解到每个函数仅使用上次迭代的值。
- WTF?
这是我的代码:
var pages=['home', 'about', 'events', 'info', 'qa', 'photos', 'contact'];
for (i in pages) {
$link='"'+"[href$='gaction.php?page="+(pages[i])+"']"+'"';
$source="/images/"+(pages[i])+".png";
$($link).hoverIntent(function() {
$('#logo_text').stop(true, true).fadeOut(
0,
function() {
$('#logo_text').attr('src', $source).fadeIn('slow'); // swaps logo
});
}, function() {
$('#logo_text').stop(true, true).pause(300).fadeOut(
0,
function () {
$('#logo_text').attr('src', '/images/name.png').fadeIn('slow'); //swaps back
});
});
}
我知道 $link 的定义很混乱,但这一点很管用。
该函数旨在根据悬停的链接将#logo_text 中的图片替换为一张图片,但到最后,每个链接都会将图片更改为“联系人”(最后一个)图片。
真的不明白如何从其他线程修复它,所以如果有人能帮忙,那就太好了!
【问题讨论】:
标签: jquery function closures loops