#javascript #html #jquery #css #addeventlistener
#javascript #HTML #jquery #css #addeventlistener
Вопрос:
$(document).ready(function() {
$('#btn').click(function() {
var mylist = $('#input').val();
$('#myUL').prepend('<li><input type="checkbox" id = "check" name="interest" onclick="toggleBoxVisibility()">' mylist '</li>');
});
});
function toggleBoxVisibility() {
if (document.getElementById("check").checked == true) {
document.getElementsByTagName("LI").style.visibility = "visible";
} else {
document.getElementById("myUL").style.visibility = "hidden";
}
}
#container {
text-align: center;
margin: auto;
width: 400px;
border: 1px solid #ccc;
}
ul li {
cursor: pointer;
position: relative;
padding: 12px 8px 12px 40px;
background: #eee;
font-size: 18px;
transition: 0.2s;
/* make the list items unselectable
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; */
}
ul li.checked {
background: #888;
color: #fff;
text-decoration: line-through;
}
ul li.checked::before {
content: '';
position: absolute;
border-color: #fff;
border-style: solid;
border-width: 0 2px 2px 0;
top: 10px;
left: 16px;
transform: rotate(45deg);
height: 15px;
width: 7px;
}
.addBtn {
padding: 10px;
width: 25%;
background: #d9d9d9;
color: #555;
float: left;
text-align: center;
font-size: 16px;
cursor: pointer;
transition: 0.3s;
border-radius: 0;
}
input {
margin: 0;
border: none;
border-radius: 0;
width: 75%;
padding: 10px;
float: left;
font-size: 16px;
}
.header:after {
content: "";
display: table;
clear: both;
}
#myUL {
width: 50%;
margin-left: auto;
margin-right: 27%;
}
.claim {
position: absolute;
right: 0;
top: 0;
}
#check {
margin-right: -190px;
margin-left: -190px;
margin-top: 9px;
}
<html>
<head>
<title>Login </title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<body>
<div class="hero">
<div class="container">
<h1 class="display-2 text-center">To-Do</h1>
<div class="row">
<form id="form" class="col-lg-6 col-8 mx-auto">
<div class="input-group">
<input id="input" class="form-control" placeholder="Enter a new task here">
<span>
<button id="btn" type="button" class="btn btn-primary" >Add</button>
</span>
</div>
</div>
<ul id="myUL">
<li>Hit the gym </li>
<li class="checked">Pay bills</li>
<li>Meet George</li>
<li>Buy eggs</li>
</ul>
<div class="row">
<button id="btnClr" type="button" class="btn btn-primary mx-auto btnHide"> Remove Complete </button>
</div>
</form>
</div>
</div>
</body>
</html>
** Я хочу провести строку через текст, как только он будет выбран, и я не уверен, как это сделать. Я вставил большую часть своего кода выше, и я попытался переключить видимость списка, чтобы убедиться, работает ли функция проверки или нет. Функция проверки работает. Мне просто нужны некоторые идеи о том, как я должен вычеркивать текст, как только флажок рядом с полем установлен. **
Ответ №1:
вы можете сослаться на эту статью, чтобы выполнить эту задачу здесь . В любом случае я пытаюсь использовать его, и он работает нормально. Надеюсь, это может дать вам некоторое представление.
Добавьте метку в свой код jQuery <label>' mylist '</label>
и выглядит примерно так:
$(document).ready(function() {
$('#btn').click(function() {
var mylist = $('#input').val();
$('#myUL').prepend('<li><input type="checkbox" id = "check" name="interest" onclick="toggleBoxVisibility()"><label>' mylist '</label></li>');
});
});
И добавьте эту строку в свой CSS:
input:checked label {
text-decoration: line-through;
text-decoration-color: #fff;
}
Комментарии:
1. Это наследует серьезный недостаток исходного кода, в итоге вы получите флажки с повторяющимися идентификаторами, вы должны устранить это и правильно связать метку с полем с помощью
for
атрибута.2. О, мой плохой, @JonP спасибо за понимание. Я просто фокусируюсь на проблеме CSS
input:checked
, но это решение создает еще одну серьезную проблему, lol.3. Нет проблем, ваше фактическое решение CSS — это то, что я бы сделал, просто стоит упомянуть о большой проблеме с дублирующимися идентификаторами.