【发布时间】:2012-12-20 16:23:08
【问题描述】:
我有一个非常简单的 jquery 需要检查从 ajax 调用返回的布尔值,并设置一个复选框来检查它是否为真。
console.log("loc: " + r.location.defaultLocation);
if( r.location.defaultLocation == true ) {
$('#loc-default').attr('checked',true);
}
这在打开模式表单的 onclick 函数中运行 - 如果返回的位置信息表明这是默认位置,则应选中该复选框。我们在一个页面上有 5 个这样的位置 - 即用户可以点击的 5 个位置。
我遇到的是,即使 r.location.defaultLocation 返回 false(根据 console.log 行),该复选框仍处于选中状态。我做错了什么?
对于那些坚持 true/false 必须是字符串而不是布尔值的人:
这是console.info(typeof(r.location.defaultLocation));的结果
这是console.dir(r) 的结果,如果有帮助的话。 (group 是模糊的,因为它是敏感信息。)
发现问题
显然 jquery 记得#loc-default 在第一个被标记为检查后被检查。我在函数中添加了一个 else,现在它可以工作了:
if( r.location.defaultLocation == true ) {
$('#loc-default').attr('checked',true);
}
else {
$('#loc-default').attr('checked', false);
}
【问题讨论】:
-
只需使用
if( r.location.defaultLocation ) {。与您的问题无关,但当我看到== true时让我很恼火:P -
并使用
prop而不是attr。 -
您确定
r.location.defaultLocation是布尔值而不是字符串吗? -
r.location.defaultLocation 是否已初始化?如果是这样,它总是正确的。 r.location.defaultLocation 的值是多少?您可能想对此进行测试。
-
@Doorknob - 我先尝试过,得到了相同的结果,所以我想我会回到完整版看看它是否有所作为。
标签: javascript jquery boolean-expression