sto avendo alcuni problemi durante l'aggiornamento di una barra di avanzamento jQuery. Questa barra di avanzamento non è nel documento durante il caricamento della pagina, sto aggiungendo solo quando l'utente fa clic su un pulsante, ding qualcosa di simile:aggiornamento una barra di avanzamento JQuery aggiunto in fase di esecuzione
$(this).parent().append('<div class="progressbar"></div>');
$(this).parent().children('div.progressbar').show();
$(this).parent().children('div.progressbar').progressbar({value: 20});
poi, utilizzando un timeout, sto cercando per aggiornarlo
function updateProgressBar() {
$('.progressbar').each(function() {
myNewValue = getNewValue();
$(this).progressbar('value', 50);
});
setTimeout('updateProgressBar()', 5000);
}
setTimeout('updateProgressBar()', 5000);
la console di debug si lamenta dicendo: "Uncaught: non può chiamare i metodi su progressbar prima initialiaztion: tentato di chiamare 'valore' metodo" Googling qui ho scoperto che il problema potrebbe essere legato al inizializzazione della barra di avanzamento dopo il il caricamento della pagina
Qualcuno potrebbe aiutarmi?
Grazie in anticipo
- modifica -
grazie Bryan, sto cercando la soluzione, ma io non funziona per me
Ora ho questo codice
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);
}
La console è DIRE non c'è UpdateProgress definito
- modifica -
molte grazie !!!
Ora ho una versione del tutto definitiva che funziona ...
Ecco il mio codice corrente
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);
Come potete vedere ho aggiungere un controllo se c'è già una barra di avanzamento come passo più volte quel codice più volte. La barra di avanzamento viene aggiornato ogni volta, ma la console si lamenta dicendo "TypeError: Non è possibile chiamare il metodo 'applicare' di indefinito", così ho dovuto aggiungere il blocco try con un corpo fermo vuota far cadere l'errore. La pagina funziona ma potrebbe essere interessante se si dispone di un idea del perché non c'è che l'errore
Qual è il plug-in che stai utilizzando? – lonesomeday
sto usando jquery-1.4.2.js e jquery UI Progressbar 1.7.2 – thrantir
Acquista la mia nuova risposta qui sotto. – rossipedia