我认为我遇到了与此处描述的问题几乎相同的问题:fine-uploader generate more unique custom file ids 但我无法找到符合我需求的解决方案。
我有一个包含2个标签的模态窗口。每个选项卡都包含一个FineUploader实例。这非常有效。 但 我想为添加的每个文件分配行为(例如,为生成的拇指分配" onclick"行为)。 为此,我做了类似的事情:
callbacks: {
onComplete: function(id, name, response) {
scope.thumbloaded({
id: id,
name: name,
uuid: response.uuid
});
},
并且scope.thumbloaded函数执行此操作:
function thumbloaded(id, name, uuid) {
$('#qq-file-id-' + id).on('click', function(e) {
e.stopPropagation(); // avoid the entire thumbnail to catch the event
doSomething();
});
}
问题是FU使用格式化的ID创建DOM元素,例如 qq-file-id-XXX 。 那么,当我在每个FU实例中添加几个文件时(在我的每个选项卡中都记得?),FU会创建两个具有相同ID的DOM元素。然后点击"在具有相同ID的元素上添加两次事件。
你看到了问题??
我还没有找到解决方案。
任何帮助?
感谢。
答案 0 :(得分:1)
好的,我终于找到了一个基于jquery选择器的解决方法。 虽然很容易。 我只是将一个特定的类应用到我刚才处理的每个元素中。但是,我不会将新的事件监听器挂钩到已经拥有它的元素。
代码不言自明:
function thumbloaded(id, name, uuid) {
var newThumb = $('.qq-file-id-' + id + ':not(.aw-thumbnail)');
newThumb.prop('id', uuid);
$('#' + uuid).on('click', function(e) {
doSomething();
});
$('#' + uuid).addClass('aw-thumbnail');
}