什么数据类型是$('#checkbox')。attr('checked')

时间:2012-04-27 21:06:47

标签: javascript jquery html checkbox

我在网上做了很多搜索,发现了将$('#checkbox').attr('checked')视为字符串的示例以及将其视为布尔值的其他示例。

在我的情况下,我发现此声明按预期工作:

$('#AcceptAgreement').attr('checked', false);

但是这个没有:

if ($('#AcceptAgreement').attr('checked') == true)

第二个陈述是假的,因为事实上该值是“已检查”。

那是哪个?它是字符串还是布尔值,如何以可靠的方式读取和写入?

6 个答案:

答案 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*/ ;