【发布时间】:2012-08-16 15:19:56
【问题描述】:
抱歉,这可能是一个简单的问题。我正在尝试使用 jQuery 构建我的第一个导航。这个想法是,在按钮悬停时,只要不是“选定”按钮,背景颜色和文本颜色就会发生变化。除了文本颜色之外,我所有这些工作都很好。与在 jQuery 中一样,它看不到我的循环变量:
function testIndex(navIndex){
for(i=0; i<=4; i++){
if(i != navIndex){
$('#nav a:eq('+i+')').hover(function(){
$(this).fadeTo('fast', 0.3, function(){
$(this).css('background-color','#ff3520');
$('#nav li:eq('+i+')').css('color', '#ffffff');
}).fadeTo('fast', 1);
},
function(){
$(this).fadeTo('fast', 0.3, function(){
$(this).css('background-color', '#e8e8e8');
$('#nav li:eq('+i+')').css('color', '#ff3520');
}).fadeTo('fast', 1);
});
};
};
};
在
$('#nav li:eq('+i+')').css('color', '#ff3520');
看不到“i”变量。我已经通过插入我自己的变量对其进行了测试,它可以工作。
有什么建议吗?
谢谢。
【问题讨论】:
-
能不能详细说明一下“看不到”?
-
如果将
for语句更改为for(var i=0; i<=4; i++)会怎样? -
在
i前面添加var否则你只会得到最后一个值,因为你的变量是全局变量 -
变量看不到。听起来像是惠普的工作。洛夫克拉夫特。
-
@jli as in 不能被 $('#nav li:eq('+i+')').css('color', '#ff3520');部分。但是,它可以通过 $('#nav a:eq('+i+')').hover(function()...
标签: javascript jquery closures