我有这样的代码:
for (var i = 0; i < interactions.length; i++) {
action = interactions[i].split(':');
if (events.indexOf(action[0]) >= 0) {
$(this).bind(action[0], function (e) {
if (action.length == 2) {
model[action[1]]();
}
else if (action.length == 3) {
var args = action[2].split('|');
model[action[1]].apply(null, args);
}
});
}
}
变量“events”只是一个带有事件名称的字符串,如“click,dblclick”等......问题是当我进入事件时,“action”变量正在失去上下文。这似乎是一个类似于闭包的构造,其中“动作”应该保留在上下文中,但事实并非如此。在此示例中,我有两个交互,如下所示:
1)点击:保存
2)禁用:SomeCustomFunction
所以,当我执行一个点击事件时,我希望 action[1] 是“保存”,但它实际上是“禁用”的。所以,就像上次设置的一样,这就是我得到的。
任何想法如何保持上下文?
非常感谢,