Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   нахождение родителя родителя элемента DOM (https://javascript.ru/forum/events/74764-nakhozhdenie-roditelya-roditelya-ehlementa-dom.html)

Vadim1616 07.08.2018 04:53

нахождение родителя родителя элемента DOM
 
Здравствуйте, есть вот такой HTML:
<div class="list" id="list">
<div class="task" id="task">
<div class="task-txt">
<div class="task-header">Lorem</div>
<div class="task-description">Lorem ipsum dolor sit amet</div>
</div>
<div class="task-buttons">
<input type="button" class="task-done" value="done">
<button class="task-edit"><i class="fas fa-edit"></i></button>
<button class="task-delete" id="delete"><i class="fas fa-trash"></i></button>
<input type="checkbox" class="task-follow">
</div>
</div>
</div>

эта конструкция генерируется по нажатию на кнопку и ее нет в изначальном DOM.

мне нужно, чтобы при нажатии на <button class="task-delete" id="delete"> эта конструкция удалялась, но я не могу разобраться как правильно найти родителя родителя button, тобишь <div class="task" id="task">.

var list = getElementById("list");
task.onclick = function(event){
     var target = event.target;
     var task = getElementById("task");
     if(target.id == "delete"){
          this.removeChild(task);
}
}

Это все что у меня получается, но оно удаляет не тот блок task, в котором находиться нажатая кнопка, а первый из таких же блоков task в блоке list.

Malleys 07.08.2018 05:34

<template id="list-template">
	<div class="list" id="list" style="margin: 1em;">
		<div class="task" id="task">
			<div class="task-txt">
				<div class="task-header">Lorem</div>
				<div class="task-description">Lorem ipsum dolor sit amet</div>
			</div>
			<div class="task-buttons">
				<input type="button" class="task-done" value="done">
				<button class="task-edit"><i class="fas fa-edit"></i></button>
				<button class="task-delete" id="delete">Delete<i class="fas fa-trash"></i></button>
				<input type="checkbox" class="task-follow">
			</div>
		</div>
	</div>
</template>
<button id="add-button">Add</button>
<script>
	var i = 1;

	// пример добавления
	document.getElementById("add-button").addEventListener("click", function(event) {
		var list = document.getElementById("list-template").content.cloneNode(true);
		list.querySelector(".task-header").textContent += "#" + i++;
		document.body.appendChild(list);
	});
	
	// пример обработки события 
	document.addEventListener("click", function(event) {
		if(event.target.matches(".list .task-delete")) {
			event.target.closest(".list").remove();
		}
	});
</script>


Часовой пояс GMT +3, время: 17:36.