我在网上做了很多搜索,发现了将$('#checkbox').attr('checked')
视为字符串的示例以及将其视为布尔值的其他示例。
在我的情况下,我发现此声明按预期工作:
$('#AcceptAgreement').attr('checked', false);
但是这个没有:
if ($('#AcceptAgreement').attr('checked') == true)
第二个陈述是假的,因为事实上该值是“已检查”。
那是哪个?它是字符串还是布尔值,如何以可靠的方式读取和写入?
答案 0 :(得分:4)
可能你不应该使用属性来改变状态只需使用dom节点的'checked'属性
$('#AcceptAgreement')[0].checked = false
if ($('#AcceptAgreement')[0].checked)
答案 1 :(得分:3)
这取决于您使用的jQuery版本。
checked
既是属性又是属性。在旧版本的jQuery中,.attr()
总是返回属性,而不是属性,它通常是一个布尔值。较新版本的jquery(1.6+)有一个名为.prop
的新方法,它返回布尔属性值,而.attr()
现在正确返回字符串值。我不确定属性是否会在属性更改时始终更新。
答案 2 :(得分:1)
这是一个字符串,但jQuery允许您使用布尔值设置它,然后相应地更改属性。将其设置为“false”会导致attr('checked')
返回undefined
。
答案 3 :(得分:1)
找出数据类型的基本方法
console.log(typeof $('#AcceptAgreement').attr('checked'));
但是在jQuery 1.7之前,它用于返回属性值,现在它返回纯字符串。
另一个替代方法是.prop('checked')
返回布尔值。
答案 4 :(得分:0)
要写,你必须使用:
$('#AcceptAgreement').attr('checked', 'checked');
如果您想知道是否可以使用:
if($('#AcceptAgreement').attr('checked'))
答案 5 :(得分:0)
你可以使用:
if ($('#AcceptAgreement').is(':checked'))
{
//...
}
或shortend:
$('#isAgeSelected').is(':checked') ? /*true*/ : /*false*/ ;