这似乎与此处发现的类似问题,但恐怕我不理解所提供的解决方案。 HTML5 中的多个放置事件
我正在尝试使用 Ext JS 库从一个拖动源设置多个放置目标。当我为 notifyEnter 定义闭包时,它似乎总是使用变量“i”来发出警报(出于调试目的,我已将其更改为警报)。来自Java背景,我的直觉是通过在循环中定义一个最终变量并在定义闭包之前分配我想要的 i 或 playerLocationPanel 来解决这个问题,但这似乎不是一个有效的解决方案.
这是我 8-10 年来第一次涉足 Javascript,非常感谢您的帮助。
/****
* Setup Drop Targets
***/
var playerPanelDropTargets = new Array();
var dropTargetEls = new Array();
for(var i=0;i<=5; i++){
dropTargetEls[i] = playerLocationPanels[i].body.dom;
playerPanelDropTargets[i] = Ext.create('Ext.dd.DropTarget', dropTargetEls[i], {
ddGroup: 'GridExample',
notifyEnter: function(ddSource, e, date){
// The problem here is that it always calls, specifically playerLocationPanels[i]
// and i is always going to be 1 more than the top of the loop.
//playerLocationPanels[i].body.stopAnimation();
//playerLocationPanels[i].body.highlight();
alert(i);
}
});
}