Дублированные загрузки - Cordova/Framework7

Отредактировано: у меня есть функция для загрузки файлов и событие для прослушивания кликов, которые запускают эту загрузку

Событие:

$$('button').on('click', function() {                                   
    var media = $$(this).attr('data-url');              
    Download(media);
    }
});

"Download" - это функция, которая задерживается, чтобы быть завершенной... Во время работы, если я нажму на другую кнопку, чтобы получить ее значение, переменная "media" получит значение первой кнопки - которая обрабатывается в "Download". "функция

Как мне это исправить?

Спасибо

2 ответа

Решение

Я решаю это так:

На моей странице есть несколько кнопок, и я думаю, что это вызывает конфликты. Итак, я создаю "динамический класс" с частью ссылки и связываю с ними событие вместо кнопки.

    //My file is in this link. The absolute link to my jpg file will be catched in JSON inside here...
    var link = 'https://www.myserver1.com/f/wPAU322jT36/'; 
    var id_link_1 = link.substring(28,100); //-> wPAU322jT36/
    var id_link = id_link_1.replace('/',''); //-> wPAU322jT36

Итак, я поставил его как класс в HTML:

   //data-url is my .jpg file catched in JSON in link above
    var html = '<button data-url="https://www.myserver1.com/myfie.jpg" class="btn btn-primary btn-lg btn-block '+id_link+'"';

Итак, я называю это внутри события

$$('.'+id_link+'').on('click', function() {                                   
    var media = $$(this).attr('data-url');              
    Download(media);
    }
});

Так что я получил уникальные классы, которые нужно назвать. Теперь это работает:)

У меня такая же проблема с тобой, как раньше. Тогда я решил их.

Попробуй поставить .off('click') до .on('click'), это решит вашу проблему.

Так это будет выглядеть так:

$$('button').off('click').on('click', function() {                                   
  var media = $$(this).attr('data-url');              
  Download(media);
});

ИЛИ ЖЕ

Добавить off('click') внутри вашей функции в конце.

$$('button').on('click', function() {                                   
  var media = $$(this).attr('data-url');              
  Download(media);
  $$(this).off('click');
});
Другие вопросы по тегам