【发布时间】:2020-08-05 01:49:31
【问题描述】:
我有几个复选框。我想在选中复选框时添加一个 css 类,并在未选中时删除该类。我的代码有时只能工作。例如,如果选中一个复选框,它只会添加和删除类。如果选中了多个复选框,即使未选中复选框,它也不会删除该类。有没有更好的方法来实现这一点?
$(document).ready(function () {
var ckbox = $("input[name='checklist']");
var chkId = '';
$('.list_task').on('change', function() {
if (ckbox.is(':checked')) {
$("input[name='checklist']:checked").each ( function() {
chkId = $(this).val() + ",";
chkId = chkId.slice(0, -1);
chklab =$(this).attr('id');
});
//cross line through label add css style
$("#lab"+chklab).addClass("selected-task");
//send data to ajax
}else{
//uncross
$("#lab"+chklab).removeClass("selected-task");
}
});
});
.selected-task{
text-decoration-line: line-through;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="checklist_bed_room">
<input id="29" type="checkbox" class="list_task" name="checklist" value="bed_dust_surface">
<label id="lab29" for="29">Dust surfaces</label>
<br>
<input id="30" type="checkbox" class="list_task" name="checklist" value="bed_dust_furniture_top">
<label id="lab30" for="30">Dust and hand wipe furniture tops</label>
<br>
<input id="31" type="checkbox" class="list_task" name="checklist" value="bed_dust_surface">
<label id="lab31" for="31">Dust furniture</label>
<br>
<input id="32" type="checkbox" class="list_task" name="checklist" value="bed_dust_baseboards">
<label id="lab32" for="32">Dust baseboards and chair rails</label>
<br>
<input id="320" type="checkbox" class="list_task" name="checklist" value="bed_dust_door_panels">
<label id="lab320" for="320">Dust door panels</label>
<br>
<input id="33" type="checkbox" class="list_task" name="checklist" value="bed_dust_windows">
<label id="lab33" for="33">Dust blinds, window sills, and lock</label>
</div>
【问题讨论】: