Удалить элемент списка по клику на него

121
04 января 2021, 23:10

Необходимо удалить или изменить класс элемента li по клику на него. На чистом js
Пример списка:

Answer 1

Для работы с классами элементов (nodes) существует свойство classList с доступными методами для добавления, изменения, удаления классов элемента.

// Выбираем все элементы с классом `.todo__link`, 
// по которым будут выполняться щелчки. 
const LINKS = document.querySelectorAll('.todo__link') 
 
function toggleTodo(event) { 
  // Отменяем действие по умолчанию. 
  event.preventDefault() 
 
  // Элемент по которому был выполнен щелчок. 
  let target = event.target 
 
  // Нас интересует родитель элемента с классом `li.todo` 
  let item = target.closest('li.todo') 
 
  // Если элемент найден, то: 
  if (item) { 
    // добавляем/удаляем класс у элемента `li.todo`. 
    item.classList.toggle('done') 
  } 
} 
 
// Добавляем ко всем ссылкам функцию обработчик для события `click`. 
LINKS.forEach(function(link) { 
  link.addEventListener('click', toggleTodo) 
})
.todo__link { 
  color: #08c; 
  text-decoration: none; 
} 
 
.done { 
  text-decoration: line-through; 
}
<ul class="todos"> 
  <li class="todo"><a href="#" class="todo__link">Задача #1</a></li> 
  <li class="todo"><a href="#" class="todo__link">Задача #2</a></li> 
  <li class="todo"><a href="#" class="todo__link">Задача #3</a></li> 
  <li class="todo"><a href="#" class="todo__link">Задача #4</a></li> 
</ul>

Укороченный вариант решения:

document.querySelectorAll('.todo')
  .forEach((item) => {
    item.addEventListener('click', () => item.classList.toggle('done'))
  })
READ ALSO
Поиск и замена js

Поиск и замена js

Есть некий html в переменнойНужно найти все ссылки и заменить href каждой по принципу: href первой ссылки - текст первого элемента массива, href второй...

104
Унаследовать class от HTMLElement

Унаследовать class от HTMLElement

Код ниже в моём понимание присваивает переменной MyTimerProto ссылку на объект у которого есть свой метод tick и прототипом объекта является HTMLElementprototype

121
Не корректная анимация появления div

Не корректная анимация появления div

Есть контейнер содержимого в галерее, у него стоят display:flex и justify-content: center, так же у каждого элемента галереи есть эффект появления и исчезновенияВ...

129