【发布时间】:2019-12-19 19:00:45
【问题描述】:
我想使用以下代码选中或取消选中按钮样式的复选框:
<ul id="ids_ul" class="nav nav-list">
<li>
<div class="btn-group-toggle" data-toggle="buttons">
<label class="btn btn-info group_toggle" id="id_label1" for="id_checkboxes1">
<input type="checkbox" value="1" id="id_checkboxes1" name="ids[]" autocomplete="off"/> One</label>
</div>
</li>
<li>
<div class="btn-group-toggle" data-toggle="buttons">
<label class="btn btn-success group_toggle" id="id_label2" for="id_checkboxes2">
<input type="checkbox" value="2" id="id_checkboxes2" name="ids[]" autocomplete="off"/> Two</label>
</div>
</li>
<li>
<div class="btn-group-toggle" data-toggle="buttons">
<label class="btn btn-info group_toggle" id="id_label3" for="id_checkboxes3">
<input type="checkbox" value="3" id="id_checkboxes3" name="ids[]" autocomplete="off"/> Three</label>
</div>
</li>
</ul>
let checkbox_state = "";
$(".group_toggle").click(function(){
$(this).toggleClass("btn-info btn-success");
checkbox_state = $(this).children("input:first");
console.log("Initial checkbox_state: " + checkbox_state.prop("checked"));
if($(checkbox_state).prop("checked") == true) {
$(checkbox_state).prop("checked", false);
console.log("Checked after click: " + checkbox_state.prop("checked"));
} else {
$(checkbox_state).prop("checked", true);
console.log("Checked after click: " + checkbox_state.prop("checked"));
}
});
在Two 上点击四次后,日志显示:
Initial checkbox_state: true
Checked after click: false
Initial checkbox_state: true // why still true?
Checked after click: false
Initial checkbox_state: false
Checked after click: true
Initial checkbox_state: true
Checked after click: false
在第 3 次单击取消选中有效,但按钮类现在相反。
如果我点击One 或Three 来选中复选框,它在第一次尝试时有效。
有人知道这里发生了什么吗?
有没有更优雅的方式来验证复选框属性checked?
【问题讨论】:
标签: javascript jquery html twitter-bootstrap-3