为什么即使指数已经关闭,这个指数似乎也能运作?

时间:2016-01-04 21:12:22

标签: javascript jquery arrays indexing closures

这个问题与我之前在Using Mouseenter / MouseLeave to Change Div in JavaScript提出的问题有关。

如上所述,我遇到了索引关闭问题。我有一个新功能使用现有索引,所提供的答案非常有意义 - 除了一部分。

之后:

for (var i = 0; i < radialDivList.length; i++) {
    if (!radialDivList[i]) continue; //skip null, undefined and non-existent elements
    if (!radialDivList.hasOwnProperty(i)) continue; //skip inherited properties
    smallID[i] = radialDivList[i].id; //assign the list of four divs to the smallID array;
    largeID[i] = smallID[i] + 'Full'; // add "Full" to each smallID element to make a largeID element
}

我有

$('#' + smallID[i]).mouseenter(function () { //works for all four radial menu divs when mouse enters
    alert(largeID[i]); // undefined
    alert(largeID); // gives expected output of full array

我现在明白为什么largeID索引未定义,但我不明白为什么mouseenter函数适用于所有四个放射状菜单项。我对索引闭包的理解让我认为,对于smallID [i] .mouseenter函数,[i]的值将为“3”,给定前一个for循环的结果。如果是这样,为什么所有四个菜单部分都会正确触发mouseenter事件?

感谢您愿意提供的任何帮助!

@programmerGuy - 关注上一个问题的进一步解释?

1 个答案:

答案 0 :(得分:0)

这似乎与浏览器缓存问题有关。重新启动后,此代码不再触发mouseenter事件。