【问题标题】:Blueimp jquery file upload - progress call back in context, last one doesn't updateBlueimp jquery 文件上传 - 上下文中的进度回调,最后一个不更新
【发布时间】:2012-10-29 17:18:33
【问题描述】:

我用的是:https://github.com/blueimp/jQuery-File-Upload(基础插件,不加ui)

我正在使用 data.context 链接各个节点以更新每个文件上传的进度,但它不会更新最后加载的文件。 因此,例如,如果我选择 4 个文件,它们将显示在我的页面上,并且进度将适用于列表中的前 3 个,但不适用于第 4 个。无论选择什么数字,它始终是列表中的最后一个。 (如果只选择了一项,则可以正常工作)。

此外,它似乎也没有更新相关的进度条。

有什么想法吗?

这是我的代码:

$('.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 原来是 'tr:last' 选择器。 所以这不起作用:

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

但确实如此:

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

【问题讨论】:

  • 您能帮我一个忙并解释取消链接的工作原理吗?
  • 我已经对我的代码进行了很多更改,但是为了让取消工作我在添加回调中的 data.submit() 之前有这个:data.context.find('.js -cancel-file').bind('click', function (e) { data.jqXHR.abort(); $(this).parent('td').prev('td').text('cancelled' ); $(this).unbind('click'); });
  • 太棒了,谢谢!最好的事情是:我明白了:)
  • 嗨 Stevo,根据我从您更新的评论中了解到,您不需要 if 条件,对吗?我的意思是以下代码: 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.context = $(fileDetails).appendTo('.file-list table');
  • 我想是的,是的。我刚刚查看了我的代码,我得到了: data.context = $(fileDetails).appendTo('ul.file-list');所以我没有测试条件,并且 DOM 现在有一个 ul ,所以它只是将列表项附加到它上面。因此,列表中是否没有任何内容都没有关系,它仍然会追加。

标签: jquery file-upload blueimp


【解决方案1】:

只需重复您的答案以确保准确性和系统一致性。
现在,它不再重现了。

“原来是 'tr:last' 选择器。所以这不起作用:
data.context = $('.file-list table tr:last').after(fileDetails);
但这样做:
data.context = $(fileDetails).appendTo('.file-list table');"

【讨论】:

    【解决方案2】:

    选择器:last 不存在。 请改用:last-child

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

    应该是正确的

    【讨论】:

      猜你喜欢
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      相关资源
      最近更新 更多