2013-08-18 4 views
1

У меня есть функция, которая динамически создает ползунок элемента, используя следующий код:Как связать динамически созданный объект с событием готовности документа?

function NewDiv(){ 
     for (var count=0; count < parseFloat(sessvars.storey_count); count++) 
      { 
       var string="<br><div id='my-slider"+count+"' class='dragdealer'><div class='red-bar handle'><span id='drag-button"+count+"'>drag me</span></div></div>"; 
       $("body").append(string); 

       var slider_id ="my-slider"+count; 
       var drag_button_id = "drag-button"+count; 

       //OBJECT GETS CREATED BELOW 
       new Dragdealer(slider_id,{horizontal: true,x:Math.random(),animationCallback: function(x, y){ 
       document.getElementById(drag_button_id).innerHTML = x.toFixed(2); 
      } 
     }); 
    } 
} 

Однако функция animationCallback, которая вызывается каждый раз, когда ползун перемещается должен быть встроен в функции слушателя, и я должен как-то связать его, возможно, с готовым событием. Это лучший способ сделать обновление ползунка при изменении его значения? И если да, то как мне это сделать?

+1

'и мне нужно как-то связать его, может быть, с готовым мероприятием' А? Почему вы не можете просто поместить свой код в обратный вызов? – SLaks

+0

Поскольку код в обратном вызове не выполняется при изменении положения ползунка. Он отлично работает для слайдеров, которые я создаю нединамически, только для слайдеров, созданных с использованием этой функции. – Louis93

+0

Просто введите ваш вызов 'NewDiv' в обработчик' ready'? – Bergi

ответ

1

Все ваши функции animationCallback закрываются над той же переменной drag_button_id.
Поэтому они все обновляют последний.

Вам необходимо обернуть тело цикла for в отдельной функции, чтобы каждое закрытие получало свою собственную переменную (поскольку Javascript не имеет области блока).

+0

Извините, не могли бы вы объяснить, как он закрывается одна и та же переменная? То, что вы сказали, правильно, потому что работает только последний слайдер. Однако, когда я зарегистрировал 'drag_button_id', казалось, что функция правильно зацикливалась. Зачем? – Louis93

+0

Было бы здорово, если бы вы могли ответить на мой вопрос, но ваша ссылка действительно помогла. Thans. – Louis93

+1

@ Louis93: 'drag_button_id' изменяется по мере запуска цикла. Обратные вызовы запускаются только после завершения цикла. – SLaks