将行为分配给Fine-Uploader生成的拇指

时间:2015-07-09 09:03:09

标签: fine-uploader

我认为我遇到了与此处描述的问题几乎相同的问题: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的元素上添加两次事件。

你看到了问题??

我还没有找到解决方案。

任何帮助?

感谢。

1 个答案:

答案 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');
}