可能重复:
Access outside variable in loop from Javascript closure
我想在我的rails应用程序中添加键盘快捷键,以便按下例如CTRL-N
将导致访问通知页面(无论是什么)。这适用于每页只有一个快捷方式,但在一个页面上没有很多快捷方式。
我做了以下事情:
添加到链接快捷方式等特殊元素。我添加了一个帮助器,以便link_to_shortcut_name
生成HTML代码,如
<a href="/notices" class="current shortcut" data-path="/notices" data-shortcut="ctrl+n" title="Notice (ctrl+n)">Notice</a>
我想在javascript中解释数据。为此,我在application.js
添加了以下代码:
function _mapShortcuts() {
var elements = document.getElementsByClassName("shortcut");
for (var i = 0; i < elements.length; i++) {
var ele = elements[i];
var sc = ele.getAttribute('data-shortcut');
var path = ele.getAttribute('data-path');
shortcut.add(sc, function(){
window.location = path;
})
}
}
$(function() {
_mapShortcuts()
});
我的期望是,每次访问最后一条路径时,通过按快捷方式向不同的快捷方式添加不同的访问路径。似乎我的天真实现一直在匿名函数内部绑定最后一个元素的路径。
我应该如何编写该函数,以便对于不同的键盘快捷键,将绑定不同的路径?我已经尝试了3种不同的实现,并且所有这些实现都是相同的,所以故障应该是我的。
PS:为了避免将来出现这类问题,我应该阅读哪本书?