JSFiddle - React, Tailwind, and code Playground
HTML
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container mt-3 mb-3">
<nav class="navbar navbar-light bg-light">
<div class="navbar-brand font-weight-bold">Список дел</div>
<div class="navbar navbar-right">
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Управление
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#" id="clear-done">Стереть выполненные</a>
<a class="dropdown-item" href="#" id="clear-all">Стереть все</a>
</div>
</div>
</div>
</nav>
</div>
<div class="container" style="width: 600px">
<ul class="list-group" id="to-do-list">
<li id="add-field" class="list-group-item">
<div class="input-group">
<input autocomplete="off" type="text" class="form-control pb-2" id="input"
...
CSS
.click-done {
text-decoration: line-through;
}
.hover-done {
text-decoration: line-through;
}
.click-done-color {
background-color: rgba(255, 0, 0, 0.2) !important;
}
.hover-done-color {
background-color: rgba(0, 255, 0, 0.2) !important;
}
JavaScript
$('body').css('user-select', 'none')
function addNote() {
if ($('#input').val() != '') {
var v = $('#input').val();
var $t = $(`<li class="list-group-item notes">${v}</li>`);
$('#to-do-list').prepend($t).hide().slideDown();
$('#input').val('');
}
return $t;
}
function addEvents($elt) {
$elt.click(function (e) {
//console.log(e.target);
e.preventDefault();
$(e.target)
.toggleClass('click-done click-done-color')
.removeClass('hover-done hover-done-color');
}).hover(function () {
// over
$(this).addClass('hover-done hover-done-color');
}, function () {
// out
$(this).removeClass('hover-done hover-done-color');
}
).dblclick(function (e) {
$(e.target).slideUp(() => {
$(e.target).remove();
});
})
}
$('#add-button').click(function (e) {
e.preventDefault();
addEvents(addNote());
});
$('#input').keypress(function (e) {
let keyCode = e.which;
if (keyCode == '13') {
addEvents(addNote());
}
});
$('#clear-all').click(function (e) {
e.preventDefault();
$('.notes').each(function (index, element) {
// element == this
$(this).slideUp(() => {
$(this).remove();
});
});
});
$('#clear-done').click(function (e) {
e.preventDefault();
$('.click-done').each(function (index, element) {
// element == this
$(this).slideUp(() => {
$(this).remove();
});
});
});