假设我有一个id为'test'的复选框,并且它在一个加载了jQuery 1.5.2的页面上。
<input id="test" type="checkbox"/>
现在,如果我点击复选框将其设置为checked
状态...
为什么$("#test").is(":checked")
返回true
而$("#test").is("*[checked]")
返回false
。
答案 0 :(得分:8)
[checked]
是一个选择器,用于选择当前使用 checked
属性检查的元素而不是属性 - 换句话说“如果元素具有checked属性,捡起来”。
如果要检查是否选中了复选框,则必须使用:checked
。
使用示例:
if($('#test').is(':checked'))
{
return true;
}
使用jQuery 1.6及更高版本,您可以出于性能原因使用.prop()
函数。
if($('#test').prop('checked'))
{
return true;
}
答案 1 :(得分:2)
因为checked
不是input
元素的属性。它是属性。您的*[checked]
选择器会检查它是否具有checked
属性,该属性在元素上永远不存在。您可以将checked="checked"
添加到input
元素,该元素设置该对象的checked
属性,但即使取消选中该框,该属性也将始终存在。这是因为选中和取消选中只会更改复选框的checked
属性,而不会更改checked
属性。
答案 2 :(得分:2)
复选框的选中性反映在对象属性checked
中。它可以由DOM属性checked
设置,但方向是单向的:当对象的属性更改时,DOM属性不会更新。 :checked
是一个专用的伪选择器,它将检查对象的属性; [checked]
是一个检查DOM属性是否存在的选择器。
答案 3 :(得分:0)
请参阅jQuery属性页上对checked属性的讨论:
答案 4 :(得分:0)