Reputation: 4649
I'm trying to create a list of input tags along with delete button next to it. When I click on delete button, the input tag next to it should also get deleted. Here only the button gets deleted but not the respective li
. How do I go about this?
var buttonItems = document.querySelectorAll(".deleteButton");
var listItems = document.getElementsByTagName("li");
for (var i = 0; i < buttonItems.length; i++) {
for (var i = 0; i < listItems.length; i++) {
buttonItems[i].addEventListener('click',function(e){
this.remove(this)
listItems[this].remove()
})
}
}
Upvotes: 0
Views: 130
Reputation: 18555
Use items parent to .removeChild
.
var deleteButtons = document.querySelectorAll(".delete-button");
var grandparent;
for (var i = 0; i < deleteButtons.length; i++) {
deleteButtons[i].addEventListener('click',function(e){
grandparent = e.target.parentElement.parentElement;
grandparent.removeChild(e.target.parentElement);
});
}
<ul>
<li>
Test Test 1<button class="delete-button">Delete</button>
</li>
<li>
Test Test 2<button class="delete-button">Delete</button>
</li>
<li>
Test Test 3<button class="delete-button">Delete</button>
</li>
<li>
Test Test 4<button class="delete-button">Delete</button>
</li>
<li>
Test Test 5<button class="delete-button">Delete</button>
</li>
</ul>
Upvotes: 1
Reputation: 10262
You get parentNode
, which Element
inherits from Node
:
In ES5
document.querySelectorAll(".deleteButton").forEach(function(btn) {
//Add listener for click event on delete button
btn.addEventListener('click', function(e) {
//it will always return the li tag
//beucase lit tag is parent of button..
e.target.parentNode.remove();
});
});
<ul>
<li>Coffee<button class="deleteButton">Delete</button></li>
<li>Tea <button class="deleteButton">Delete</button></li>
<li>Milk <button class="deleteButton">Delete</button></li>
</ul>
In ES6
document.querySelectorAll(".deleteButton").forEach(btn => {
//Add listener for click event on delete button
btn.addEventListener('click', e => e.target.parentNode.remove());
});
<ul>
<li>Coffee<button class="deleteButton">Delete</button></li>
<li>Tea <button class="deleteButton">Delete</button></li>
<li>Milk <button class="deleteButton">Delete</button></li>
</ul>
References:
Upvotes: 1