@maksplotnikoff

Почему функция отрабатывает только один раз?

Есть вот такая функция на jquery:
$('input[type=file]').on('change', function() {

    var value = $(this).val();
    var object = $(this);
    if (value != '') {
      $(object.parent()[0]).addClass('delete-file');
      $(object).remove();
      $('.file_upload').click(function() {
    $(this).removeClass("delete-file");
    $(object.val('')).appendTo(this);
    });  
    }
});

И вот такой код на HTML:
<div class="file_upload"><input type="file" name="drugoe1"/></div>

Первый раз всё прекрасно отрабатывает, а вот второй раз не хочет. Подскажите, в чем может быть причина?
  • Вопрос задан
  • 301 просмотр
Пригласить эксперта
Ответы на вопрос 3
berezuev
@berezuev
#define TRUE FALSE
При удалении-добавлении DOM-элементов все эвенты по ним теряются.
Надо делать вот так: https://jsfiddle.net/tt77s21b/1/
Здесь я вывел всю эту историю в отдельную функцию, и при изменении DOM обновляю события (12 строка)
Ответ написан
Комментировать
link_web
@link_web
Magento, Laravel, Zend, Shopify, Prestashop, WP
Потому что второй раз у вас это условие if (value != '')
уже ложно. Переделайте логику
Ответ написан
trushka
@trushka
Надо не $('.file_upload').click(function() {.., а $('.file_upload').one('click', function() {...
Чтоб клик только один раз сработал после каждого change
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы