У меня проблемы с обновлением jquery. индикатор выполнения. Этого индикатора выполнения нет в документе во время загрузки страницы, я добавляю его, когда пользователь нажимает кнопку, и набирает что-то вроде этого:
$(this).parent().append('<div class="progressbar"></div>');
$(this).parent().children('div.progressbar').show();
$(this).parent().children('div.progressbar').progressbar({value: 20});
затем, используя тайм-аут, я пытаюсь обновите его
function updateProgressBar() {
$('.progressbar').each(function() {
myNewValue = getNewValue();
$(this).progressbar('value', 50);
});
setTimeout('updateProgressBar()', 5000);
}
setTimeout('updateProgressBar()', 5000);
консоль отладки жалуется: «Uncaught: не удается вызвать методы на индикаторе выполнения до инициализации: попытка вызвать метод 'value'» Погуглив здесь, я обнаружил, что проблема может быть связана с инициализацией индикатор выполнения после загрузки страницы
Может кто-нибудь мне помочь?
Заранее спасибо
- редактировать -
спасибо Брайан, я пробую ваше решение, но у меня не работает
Теперь у меня есть этот код
function startProgress() {
$(this).parent().append('<div class="progressbar"></div>');
$(this).siblings('.progressbar').show();
$(this).siblings('.progressbar').progressbar({value: 0});
function updateProgress() {
$('.progressbar').each(function() {
myNewValue = getNewValue($(this).parent().parent().attr('id'));
$(this).progressbar('value', myNewValue);
});
setTimeout('updateProgress', 5000);
}
setTimeout('updateProgress', 5000);
}
Консоль говорит, что нет никакого updateProgress
- изменить -
большое спасибо !!!
Теперь я ' есть вполне определенная версия, которая работает ks ...
Вот мой текущий код
if($(this).siblings('.progressbar').size() == 0) {
$(this).parent().append('<div class="progressbar"/>');
$(this).siblings('.progressbar').progressbar({value: 0});
}
$(this).siblings('.progressbar').show();
function updateProgress() {
$('.progressbar').each(function() {
myParams = 'service=' + $(this).parent().parent().attr('id') + '&content=' + $(this).parent().attr('id')
myUrl = '/datacast/content_progress/?' + myParams;
theValue = $(this).progressbar('value');
$.get(myUrl, {}, function(aReply) {
myData = aReply.split(' ');
myItemId = myData[0];
myValue = parseInt(myData[1]);
try {
$(".item[id = " + myItemId + "]").children(".progressbar").progressbar('value', myValue);
}
catch(myError) {
//alert(myError);
}
})
});
setTimeout(updateProgress, 5000);
}
setTimeout(updateProgress, 5000);
Как видите, я добавил элемент управления, если уже есть индикатор выполнения, поскольку я прохожу этот код несколько раз. Индикатор выполнения обновляется каждый раз, но консоль жалуется: «TypeError: невозможно вызвать метод 'apply' of undefined», поэтому мне пришлось добавить блок try с пустым телом catch, чтобы сбросить ошибку.Страница работает, но это может быть интересно, если вы понимаете, почему возникла эта ошибка