Commment.isDefault 的计算结果为“true”或“false”。
目标是动态更新复选框。
这有效:
if (Comment.isDefault == 'false'){
// console.log("Checked.");
$('#chkDefault'+ i).prop('checked', true);
}
else {
// console.log("NOT Checked.");
$('#chkDefault'+ i).prop('checked', false);
}
这不起作用:
$('#chkDefault'+ i).prop('checked', Comment.isDefault);
非工作情况只会使每个复选框都为 TRUE。
我想要更优雅的解决方案,并了解为什么仅使用变量来设置属性不起作用。
想法?非常感谢!
最佳答案
如果你尝试这样做:
console.log(typeof Comment.isDefault); // string
console.log(typeof "false"); // string
console.log(typeof false); // bool
也不是空字符串总是true
(!
返回相反的 bool 值,所以!!
返回 bool 值等价)
console.log(!!"true") // true
console.log(!!"false") // true
console.log(!!"") // false
console.log(!!true) // true
console.log(!!false) // false
您必须更新(最佳选择):
Comment.isDefault = true; // or = false; instead of 'true'
或者您也可以测试字符串值(如果您无法轻松更新 Comment.isDefault
值):
$('#chkDefault'+ i).prop('checked', Comment.isDefault == 'true');
关于javascript - 为什么一种设置 prop 的方法不起作用(jQuery)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43394261/