обновить индикатор выполнения JQuery, добавленный во время выполнения

У меня проблемы с обновлением 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, чтобы сбросить ошибку.Страница работает, но это может быть интересно, если вы понимаете, почему возникла эта ошибка

5
задан thrantir 4 November 2010 в 14:52
поделиться