Вы добавляете его точно так же, как и любой другой прослушиватель событий. Вам просто нужно сделать это после того, как динамически добавленный элемент был добавлен в DOM.
var addInputText = document.querySelector('.add-input-text');
var userForm = document.querySelector('.user-form');
addInputText.addEventListener('click', function(){
userForm.innerHTML +=
"<button class='form-section-remove-1'>X</button>";
// Now that the new element has been added to the DOM,
// you can work with it as you would any other element.
document.querySelector("button.form-section-remove-1").addEventListener("click", function(){
console.log("You clicked me!");
});
});
<button class="btn btn-sm btn-success add-input-text">add</button>
<div class="user-form"></div>
Проблема, с которой вы столкнетесь, заключается в том, что вы используете .innerHTML
для добавления нового элемента в DOM и потому, что вы потенциально добавляетекроме одного из них, у нас нет возможности легко ссылаться на вторую и последующие кнопки.
Вместо этого, если вы создаете новые элементы, используя DOM API и .createElement
, становится намного проще:
var addInputText = document.querySelector('.add-input-text');
var userForm = document.querySelector('.user-form');
addInputText.addEventListener('click', function(){
// Create the element as a new DOM node
let btn = document.createElement("button");
// Now, configure it through its properties and methods:
btn.textContent = "X";
btn.classList.add("form-section-remove-1");
btn.addEventListener("click", function(){
console.log("You clicked me!");
});
// Append it into the DOM
userForm.appendChild(btn);
});
<button class="btn btn-sm btn-success add-input-text">add</button>
<div class="user-form"></div>