<分区>
问题
回调函数如何保留其创建时的局部变量?
简单示例
我正在创建一个视频播放器。它将有 slider 来控制饱和度、对比度和色调。当用户使用 slider 时,它需要确认更改了哪个 slider 以及它更改为什么值。问题在于 slider 的名称是此 onChange 回调创建者范围内的局部变量。这个回调如何保留 slider 的名称?
HTML
<div id="saturation">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
<div id="contrast">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
<div id="hue">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
JS
var elements = [
'saturation',
'contrast',
'gamma'
];
for(var i = 0; i < sliders.size(); i++) {
new Control.Slider(
$(elements[i]).down('.knob'),
$(elements[i]).down('.track'), {
onChange: function(value) {
// ERROR: elements[i] is undefined
alert(elements[i] + ' has been changed to ' + value);
}
}
}