Передать значение переменной, а не ссылку на нее
Есть функция, она создает несколько div'ов в цикле и добавляет им событие на onclick:
function(picsNum){
for(var i = 0; i < picsNum; i++){
$('<div class="controls"></div>').click(function(){slide('slideTo', i)}).appendTo($controls);
}
}
Так вот, в функцию передается не значение i, а ссылка на i, то есть внутри slide i всегда равно picsNum + 1, а не 1, 2, 3... picsNum. Как передать значение переменной, а не ссылку на нее? |
Читать http://javascript.ru/basic/closure
там и ваш пример разобран |
в jquery у событий есть data
function(picsNum){
for(var i = 0; i < picsNum; i++){
$('<div class="controls"/>').bind(
'click',
{ index : i },
function( event ){slide('slideTo', event.data.index)}).appendTo($controls);
}
}
|
| Часовой пояс GMT +3, время: 20:13. |