最近用jQuery1.10,希望设计成鼠标滑过相应的主选单,子选单就会展开
五个主选单id: MENU1 ~ MENU5
五个子选单id: SUB1 ~ SUB5
原本写成:
$("#MENU1").hover(
function(){
$("#SUB1").slideDown(800);
},function(){
$("#SUB1").slideUp(300);
});
.
.
.
.
$("#MENU5").hover(
function(){
$("#SUB5").slideDown(800);
},function(){
$("#SUB5").slideUp(300);
});
为了希望精简而改成循环,却发现下面这个方法不行
for(var i = 1; i < 6; i++){
$("#MENU"+i).hover(
function(){
alert(i);
$("#SUB"+i).slideDown(800);
},function(){
$("#SUB"+i).slideUp(300);
});
}
我后来以查到可行的写法(内部两个function "#SUB"+变量 要改用 this.id.substr(4)
控制),但仍想请教:
1. 为何明明同样包在循环之内,内部两个function用 i 却无法正确执行?
其原理为何?
2. 在内部function 增设一alert(i)观察,却发现其 i 值是"6"!
甚至超过循环的上限,这又是为何?
有劳各位先进了,谢谢 m(_ _)m