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

Fine-Uploader: extraButtons.element allows only ID, but not CLASS

我根据此处的文档使用带有一些额外定义按钮的 Fine-Uploader 插件:

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

这是我的代码:

$gallery_upload.fineUploaderS3({
...

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

基本上,它的工作原理与预期的差不多,除了一点。请注意,我已将 "element" 指定为名为“.pdf-button”的 jquery "class"。文档中的示例是 "id".

当我使用 class 时,这意味着我将在我的页面中放置多个共享相同 class 的按钮。但是,似乎只有一个按钮被捕获,并初始化为 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

这似乎不是预期的行为。如果您确定您传递的 jquery 对象包含多个元素(在您创建它时),您应该提交错误。如果您确定您的 jquery 对象在创建时包含多个对象,并且在这种情况下上传器只拾取第一个,作为解决方法,您需要包含一个数组,其中包含对每个元素的引用在你的情况下。坦率地说,我建议不要使用 jquery 插件包装器。它没有提供任何实际好处。非jquery语法更直观。

此外,如果这是库中的错误,我会感到非常惊讶,因为 jquery 包装器代码已经很长时间没有更改了,因此您需要绝对确定 jquery你传递的对象包含多个元素。