似乎选择实际检查的可检查输入的唯一方法是使用:checked选择器。
技术上有什么原因导致这种情况无效:
$("INPUT[checked]")
虽然它似乎适用于其他属性?
答案 0 :(得分:5)
因为您需要为属性添加值。但它是什么?您在HTML4 / 5中使用XHTML checked="checked"
编写简单checked
。 DOM模型应该将其存储为true。
$('input[checked="checked"]'); // Poor
$('input[checked=true]'); // Maybe
但由于潜在的浏览器差异以及检查布尔值,它很繁琐,所以有一种特定的方法可以做到。
$('input:checked'); // Correct
内部实现只检查元素.checked
属性。
来自v1.5.1:
filters: {
// ...
checked: function( elem ) {
return elem.checked === true;
},
// ...
}
答案 1 :(得分:2)
"input[checked]"
将根据原始HTML源代码进行选择。只会选择那些基于包含checked
属性的HTML标记的INPUT元素。
现场演示: http://jsfiddle.net/simevidas/PXudH/
在我的演示中,无论您如何选中/取消选中这两个复选框,都将始终选中第二个复选框(“B”)。
答案 2 :(得分:1)
$("input:checked")
是正确的语法。
答案 3 :(得分:1)
输入[checked]表示查找可能存在的属性,甚至可以取消选中,具体取决于html。 input [checked]要求生成的HTML已经具有'checked'属性,我想你知道。根据{{1}}的生成方式,在用户点击输入之前可能会出现这种情况。即使在点击之后,html的属性键值对看起来就像浏览器一样。
答案 4 :(得分:0)
我认为技术原因可能是jQuery的选择器区分大小写。这适用于所有大写的INPUT标签
答案 5 :(得分:0)
XHTML后面需要checked
属性="checked"
,但有些人不会编写有效的XHTML。使其只有一个表达式更简单。