Fine-Uploader:extraButtons.element仅允许ID,但不允许CLASS

时间:2015-02-28 17:08:30

标签: jquery fine-uploader

我根据以下文档使用Fine-Uploader插件和一些额外定义的按钮:

http://docs.fineuploader.com/features/extra-buttons.html

这是我的代码:

$gallery_upload.fineUploaderS3({
...

extraButtons: [{
    element: $(".pdf-button"),
    validation: {
        allowedExtensions: ["jpg"]
    }
}],
...

基本上,除了一点之外,它的工作方式与预期相同。请注意,我已经指定了"元素"作为jquery " class" 调用" .pdf-button"。文档中的示例是" id"

当我使用课程时,这意味着我将把多个按钮分配到我的页面中。但是,似乎只有一个按钮被捕获,并初始化为Fine-Uploader上传文件按钮。

其余的保持原样。

我想知道这是否是预期的行为,如果是的话,是否有其他方法可以实现我想要做的行为。

感谢任何帮助。

谢谢!

干杯, 托马斯

[更新]

根据与Ray的谈话,我实际上错误地使用了这个。

你不能指望FineUploader在FineUploader版本(使用和不使用JQuery包装器)上迭代jquery对象。你必须首先构建这样的东西:

var myExtraButtons = [
    {
        element: $('.file-trigger')[0]
    },
    {
        element: $('.file-trigger')[1]
    }
];

然后将其传递给Fine Uploader选项,如下所示:

$('fu-instance').fineUploaderS3({
    ...
    extraButtons: myExtraButtons,
    ...
});

以上内容现在对我有用。

有关详细信息,请参阅此讨论: https://github.com/FineUploader/fine-uploader/issues/1375

1 个答案:

答案 0 :(得分:1)

似乎这不是预期的行为。如果您确定传递的jquery对象包含的元素多于on元素(在您创建它时),则应该提交错误。如果你确定你的jquery对象在创建它时包含多个对象,并且上传者在此实例中仅提取第一个对象,作为一种变通方法,你需要包含一个数组,其中包含对你案例中每个元素的引用。坦率地说,我建议不要使用jquery插件包装器。它没有真正的好处。非jquery语法更加直观。

另外,如果这是库中的一个错误,我会非常惊讶,因为jquery包装器代码在很长一段时间内都没有改变,所以你要绝对确定你传递的jquery对象包含多个元件。