为什么[check]在JQUERY中不作为选择器工作?

时间:2011-03-08 14:58:25

标签: jquery

似乎选择实际检查的可检查输入的唯一方法是使用:checked选择器。

技术上有什么原因导致这种情况无效:

$("INPUT[checked]")

虽然它似乎适用于其他属性?

6 个答案:

答案 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")是正确的语法。

http://api.jquery.com/checked-selector/

答案 3 :(得分:1)

输入[checked]表示查找可能存在的属性,甚至可以取消选中,具体取决于html。 input [checked]要求生成的HTML已经具有'checked'属性,我想你知道。根据{{​​1}}的生成方式,在用户点击输入之前可能会出现这种情况。即使在点击之后,html的属性键值对看起来就像浏览器一样。

答案 4 :(得分:0)

我认为技术原因可能是jQuery的选择器区分大小写。这适用于所有大写的INPUT标签

答案 5 :(得分:0)

XHTML后面需要checked属性="checked",但有些人不会编写有效的XHTML。使其只有一个表达式更简单。