2015-07-09 1 views
0

Я думаю, что у меня есть почти такая же проблема, как описано здесь: fine-uploader generate more unique custom file ids Но я не могу найти решение, соответствующее моим потребностям.Назначение поведения для Fine-Uploader сгенерированных больших пальцев

У меня есть модальное окно, содержащее 2 вкладки. Каждая вкладка содержит экземпляр FineUploader. Это работает очень хорошо. BUT Я хочу назначить поведение для каждого добавленного файла (например, назначить поведение «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(); 
    }); 
} 

Проблема заключается в том, что ФУ создает DOM элементы с отформатированных идентификаторами, как qq- file-id-XXX. Итак, когда я добавляю несколько файлов в один из экземпляров FU, у меня есть (на каждой моей вкладке, помните?), FU создает два элемента DOM с одинаковыми идентификаторами. Событие «click» добавляется дважды к элементам с одинаковыми идентификаторами.

Вы видите проблему?

Мне еще не удалось найти решение.

Любая помощь?

спасибо.

ответ

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