2012-11-09 18 views
7

Tôi đang sử dụng: https://github.com/blueimp/jQuery-File-Upload (plugin cơ bản, mà không cần sự bổ sung ui)Blueimp tập tin jquery tải lên - tiến bộ gọi trở lại trong bối cảnh, người cuối cùng không cập nhật

Tôi đang sử dụng data.context để buộc liên kết riêng lẻ các nút để cập nhật tiến trình của từng tệp tải lên, nhưng nó sẽ không cập nhật tệp tải lên cuối cùng. Vì vậy, ví dụ nếu tôi chọn 4 tệp, chúng sẽ hiển thị trên trang của tôi và tiến trình sẽ hoạt động cho 3 đầu tiên trong danh sách, nhưng không phải là thứ 4. Bất kể số được chọn, nó luôn là số cuối cùng trong danh sách. (nếu chỉ 1 mục được chọn, nó hoạt động ok).

Ngoài ra, cũng có vẻ như nó cũng không cập nhật thanh tiến trình có liên quan.

Bất kỳ ý tưởng nào?

Dưới đây là mã của tôi:

$('.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 + '%'); 
    } 

}) 

CẬP NHẬT Hóa ra đó là 'tr: cuối cùng' selector. vì vậy đây không hoạt động:

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

nhưng điều này không:

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

Bạn có thể làm cho tôi một đặc ân và giải thích cách thức hoạt động liên kết huỷ-? – Hank

+2

Tôi đã thay đổi mã của mình khá nhiều, nhưng để hủy bỏ công việc tôi có ngay trước data.submit() trong phần thêm gọi lại: data.context.find ('. Js-cancel-file') .bind (nghe tiếng 'click', function (e) { \t \t \t \t data.jqXHR.abort();.. \t \t \t \t $() .parent này ('td') trước() văn bản 'td' ('hủy'); \t \t \t \t $ (này) .unbind (nghe tiếng 'click'); \t \t \t}); – Stevo

+0

Tuyệt vời, cảm ơn! Điều tốt nhất là: Tôi hiểu nó :) – Hank

Trả lời

0

Chỉ cần lặp lại trả lời của bạn cho độ chính xác và nhất quán hệ thống.
Hiện tại, không thể tái sản xuất được nữa.

"Hóa ra đó là 'tr: cuối cùng' selector vì vậy đây không hoạt động:.
data.context = $('.file-list table tr:last').after(fileDetails);
nhưng điều này không:
data.context = $(fileDetails).appendTo('.file-list table');"

0

chọn :last không tồn tại . Thay vào đó, hãy sử dụng :last-child.

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

sẽ đúng

Các vấn đề liên quan