2012-11-09 10 views
7

sto usando: https://github.com/blueimp/jQuery-File-Upload (il plugin di base, senza l'aggiunta ui)Blueimp upload di file jquery - avanzamento della chiamata nel contesto, l'ultima non aggiorna

sto usando data.context per legare singolo collegamento nodi per aggiornare l'avanzamento di ogni caricamento di file, ma non aggiornerà l'ultimo caricato. Quindi, per esempio, se scelgo 4 file, verranno visualizzati sulla mia pagina e lo stato di avanzamento funzionerà per i primi 3 nell'elenco, ma non per il 4. Indipendentemente dal numero selezionato, è sempre l'ultimo della lista. (se è selezionato solo 1 elemento funziona ok).

Inoltre, sembra che non stia aggiornando la relativa barra di avanzamento.

Qualche idea?

Ecco il mio codice:

$('.aws').fileupload({ 

    limitMultiFileUploads: 1, 

    dataType: 'html', 

    add: function (e, data) { 

      var file = data.files[0]; 
      var fileDetails = '<tr><td>' + 
      file.name + 
      '</td><td class="progress"><span class="progress"><span class="js-progress-active progress-active"></span>' + 
      '</span></td><td class="cancel-file"><a href="#" class="cancel-file-load-icon js-cancel-file">Cancel</a></td></tr>'; 

      if ($('.file-list table tr:last').length > 0) { 
       data.context = $('.file-list table tr:last').after(fileDetails); 
      } else { 
       data.context = $(fileDetails).appendTo('.file-list table'); 
      } 

      data.submit(); 
    }, 

    progress: function (e, data) { 
     var progress = parseInt(data.loaded/data.total * 100, 10); 
     data.context.find('.js-progress-active').css(
      'width', 
      progress + '%' 
      ).text(progress + '%'); 
    } 

}) 

UPDATE 'venuto fuori è la 'tr: ultima' selettore. quindi questo non funziona:

data.context = $('.file-list table tr:last').after(fileDetails); 

ma questo:

data.context = $(fileDetails).appendTo('.file-list table'); 
+0

Potresti farmi un favore e spiegare come funziona il collegamento cancel-? – Hank

+2

Ho cambiato parecchio il mio codice, ma per ottenere il cancel to work lo ho appena prima di data.submit() nell'aggiunta del callback: data.context.find ('. Js-cancel-file') .bind ('click', function (e) { \t \t \t \t data.jqXHR.abort();.. \t \t \t \t $ (this) .parent ('td') prev() testo 'td' ('cancellato'); \t \t \t \t $ (this) .unbind ('click'); \t \t \t}); – Stevo

+0

Fantastico, grazie! La cosa migliore è: lo capisco :) – Hank

risposta

0

basta ripetere la tua risposta per accuratezza e la coerenza del sistema.
Ora, non è più riproducibile.

"si rivela è la 'tr: ultima' di selezione in modo da questo non funziona:.
data.context = $('.file-list table tr:last').after(fileDetails);
ma questo:
data.context = $(fileDetails).appendTo('.file-list table');"

0

il selettore :last non esiste . Utilizzare invece :last-child.

data.context = $('.file-list table tr:last-child').after(fileDetails); 

sarebbe corretto