Доброго времени суток. Столкнулся с проблемой, в гугле не нашёл ответа... Клонирую элемент, когда пытаюсь его удалить - он не удаляется, Jquery его как-бы не видит, но если я удаляю родительский элемент - его он видит. Есть родительское поле. Минус справа предназначен для удаления данного поля, а кнопка "Добавить пункт шаблона" клонирует первое поле. Получается, я клонирую первое поле и результат удалить не получается, когда на минус нажимаю - ничего не происходит, но если я нажимаю на минус родительского элемента, он его видит и алертит единицу. HTML: <section class="createTemplate"> <div class="createTemplate--wrapper"> <h2>Создание шаблона</h2> <form method = "POST" name="addTemplate"> <div class="form-item"> <label for="name">Введите название шаблона</label> <input id = "name" type="text" placeholder = "Пример: Языки программирования"> </div> <div class="form-item" id = "addTemplate--item"> <label for="name">Введите значение для шаблона</label> <input id = "name" type="text" placeholder = "Пример: PHP"> <img src="/realise/frontend/images/ux/delete.png" alt="удалить" id = "addTemplate--remove"> </div> <div class="form-item" id = "templateAdd--controll"> <input type="button" class="btn btn-success" value = "Добавить шаблон" id = "addTemplate--doAdd"> <input type="button" class="btn btn-primary" value = "Добавить пункт шаблона" id = "addTemplate--addItem"> </div> </form> </div> </section> Код (Javascript): /* Добавление пункта шаблона */ $('#addTemplate--addItem').on('click', function (e) { e.preventDefault(); var item = $(this).parents('form').find('#addTemplate--item').clone(); console.log(item); $('#templateAdd--controll').before(item); }); /* Удаление пункта шаблона */ $('#addTemplate--remove').on('click', function (e) { e.preventDefault(); alert('1'); /* $(this).parents('div.form-item').remove(); */ }); Благодарю за потраченное время и надеюсь на помощь
Код (Javascript): $(document).on('click', '#addTemplate--remove', function (e) { e.preventDefault(); alert('1'); /* $(this).parents('div.form-item').remove(); */ }); --- Добавлено --- Как всегда, некоторые очевидные вещи проходят мимо глаз. @Exort, сколько может быть элементов с одинаковым ID? Один.Сколько будет элементов #addTemplate--remove после клонирования? Для таких целей используют классы или другой не уникальный идентификатор/селектор.
Получается, если элемент установлен по ID, то Jquery может ссылаться только по первому / родительскому элементу, а если по классу - ко всем, правильно понимаю? Спасибо за ответ.
Не совсем, но ход мыслей в правильном направлении. ID элемента - это уникальный идентификатор. Ключевое слово "уникальный" (надеюсь, что смысл расшифровывать не нужно). Класс же может быть присвоен N-ному количеству элементов. Если в коде JS сказано "найди элемент по ID", то найдя такой элемент, поиск прекращается по понятным причинам. Что касается первой части моего ответа, то код который я показал, будет не лишним, т.к. в jQuery таким образом устанавливается делегированный обработчик событий. Такой обработчик используется для динамически созданных элементов, т.е. тех, которых изначально при загрузке не было, а появились позже.