Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Передать значение переменной, а не ссылку на нее (https://javascript.ru/forum/jquery/26578-peredat-znachenie-peremennojj-ne-ssylku-na-nee.html)

Marv 13.03.2012 20:45

Передать значение переменной, а не ссылку на нее
 
Есть функция, она создает несколько 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. Как передать значение переменной, а не ссылку на нее?

Rootpassword 13.03.2012 21:00

Читать http://javascript.ru/basic/closure
там и ваш пример разобран

nikita.mmf 13.03.2012 21:51

в 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, время: 16:13.