Вам необходимо установить все флажки, l oop над ними и прикрепить событие.
function cbClicked (event) {
// reference the checkbox
var cb = event.target
// find it was checked
var isChecked = cb.checked
cb.closest("li") // find the parent li
.classList.toggle("done", isChecked) // toggle the class
}
// Select all the checkboxes
var checkboxes = document.querySelectorAll('ul input[type="checkbox"]')
// loop over all the checkboxes
checkboxes.forEach( function (cb) {
// attach the event listener to each one
cb.addEventListener("change", cbClicked)
})
.done {
text-decoration: line-through;
}
<ul>
<li>
<input type="checkbox">
List Item 1
</li>
<li>
<input type="checkbox">
List Item 2
</li>
<li>
<input type="checkbox">
List Item 3
</li>
</ul>
Если вы хотите использовать jQuery, это похоже, jQuery просто делает цикл для вас
function cbClicked (event) {
// reference the checkbox
var cb = this
var isChecked = this.checked
$(cb).closest("li") // find the parent li
.toggleClass("done", isChecked) // toggle the class
}
// Select all the checkboxes
var checkboxes = $('ul input[type="checkbox"]').on("change", cbClicked)
.done {
text-decoration: line-through;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li>
<input type="checkbox">
List Item 1
</li>
<li>
<input type="checkbox">
List Item 2
</li>
<li>
<input type="checkbox">
List Item 3
</li>
</ul>
И это можно сделать с помощью Just CSS
input:checked + label {
text-decoration: line-through;
}
<ul>
<li>
<input type="checkbox" id="cb1">
<label for="cb1">List Item 1</label>
</li>
<li>
<input type="checkbox" id="c2">
<label for="cb2">List Item 2</label>
</li>
<li>
<input type="checkbox" id="cb3">
<label for="cb3">List Item 3</label>
</li>
</ul>