2011-03-08 43 views
2

看来,选择实际检查的可检查输入的唯一方法是使用:checked选择器。为什么[checked]没有在JQUERY中作为选择器?

是否有技术原因,这不起作用:

$("INPUT[checked]") 

,而它似乎对其他属性的工作吗?

+0

我的猜测是保留它使用的[css selector abiltiies](http://reference.sitepoint.com/css/pseudoclass-checked)。但在选择器中使用属性也应该起作用。 –

+4

为什么它不起作用? http://jsfiddle.net/QCCS3/ – Sotiris

回答

2

"input[checked]"将根据原始HTML源代码进行选择。只有那些基于包含checked属性的HTML标记的INPUT元素才会被选中。

现场演示:http://jsfiddle.net/simevidas/PXudH/

在我的演示,第二个复选框(“B”)将在任何时候都可以选择,无论你如何选择/不选择这两个的复选框。

5

因为你需要把值的属性。但是它是什么?你用XHTML checked="checked"写成HTML4/5,只是简单的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; 
    }, 

    // ... 
} 
0

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

0

XHTML要求checked属性与="checked"之后,但有些人不写有效的XHTML。使它更简单,只有一个表达式。

+0

写道,甚至没有想到,我的意思是XHTML需要=“检查”,但人们并不总是把它放在 –

+0

是的,但XHTML的有效性是不相关的。无论页面是否为HTML或XHTML文档,每个浏览器都能理解此“”。 –

+0

是的,但是因为它可以用两种方式编写,要检查一个项目是否被选中,您需要两个选择器,一个用于属性,另一个用于属性和等式 –

1

input [checked]说找一个'可能'存在的属性,甚至可能取消选中它,这取决于html。输入[checked]需要生成的HTML已经具有'checked'属性,我认为你知道。根据生成的<input type="checkbox"/>的方式,直到用户单击输入时才有可能为真。即使点击后,属性键值对html看起来像是浏览器。

相关问题