在我的.html
<div class="col-md-9 col-sm-9 col-xs-12">
<div class="">
<label>
<input type="checkbox" id="SMSCheckbox" class="js-switch" /> SMS
</label>
</div>
<div class="">
<label>
<input type="checkbox" id="EmailCheckBox" class="js-switch" /> Email
</label>
</div>
</div>
在我的.js
$(document).ready(initialize);
function initialize() {
console.log("loaded JS");
$.ajax({
type: "GET",
url: "./getNotificationSettings.php",
datatype: "json",
success: function(response) {
var response = JSON.parse(response);
var bySMS = response[0].receiveSMS;
var byEmail = response[0].receiveEmail;
if (bySMS) {
console.log("bySMS = true");
$('#SMSCheckbox').prop('checked', true);
} else {
console.log("bySMS = false");
$('#SMSCheckbox').prop('checked', false);
}
if (byEmail) {
console.log("byEmail = true");
$('#EmailCheckBox').prop('checked', true);
} else {
console.log("byEmail = false");
$('#EmailCheckBox').prop('checked', false);
}
},
error: function(e) {
console.log(e);
}
});
}
bySMS = true
byEmail = true
我检查了我的控制台,它确实进入了if true
分支,但不知何故我的复选框没有被选中。奇怪的是我在jsfiddle上测试了它并且它正在工作。
这个奇怪问题可能是什么原因?
不确定切换复选框是否重要,我不得不点击措辞。点击开关不会切换它。
答案 0 :(得分:0)
当更改checked属性因某些原因不起作用时,我总是在复选框上使用.click(),不确定这是否是一种正确的方法。
答案 1 :(得分:0)
我创建了一个小功能来为你处理它:
$.fn.setCheckbox = function(value) {
var checked = $(this).attr("checked") != "undefined" &&
($(this).attr("checked") === "checked" ||
$(this).attr("checked") === true);
if (checked != value) {
$(this).click();
}
}
Plunker:https://plnkr.co/edit/mdAzNsZnRdl2ifIT22e0?p=preview