是:文字区分大小写?

时间:2011-12-12 21:59:50

标签: jquery jquery-selectors

jQuery:文本选择器区分大小写吗?

例如:

<input type="TEXT">

不匹配但是:

<input type="text">

匹配。

情况似乎如此。我只是在寻找验证。

修改

看起来甚至[type = text]选择器在Chrome和Firefox中也区分大小写但不是IE8(在IE8文档模式下)

3 个答案:

答案 0 :(得分:4)

编辑:尽管我进行了研究,但我首先提到了完全错误的结论。答案已经更新:O(kudo去了@ThiagoSantos,从一开始就有正确答案:D)。

jQuery ":text" documentation州:

  

因为:text是jQuery扩展而不是CSS规范的一部分,使用:text的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。

如果你深入研究source of 1.7.1,看来这个选择器实现为:

text: function( elem ) {
    var attr = elem.getAttribute( "type" ), type = elem.type;
    // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) 
    // use getAttribute instead to test this case
    return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
}

对于<input type="tEXt" />attr的值变为“tEXt”,与type不匹配。这让我很惊讶:

更新的答案应为::文字区分大小写

答案 1 :(得分:3)

这似乎是敏感的家伙.. 所以实际上以下情况并非如此

  

$(':text')相当于$('[type = text]')

这是一个示例..只有一个警告

http://jsfiddle.net/huX3M/

答案 2 :(得分:2)

我会说,首先,它区分大小写。请参阅this jsFiddle

鉴于<input type="text">应该与<{1}}完全,我相信这可能是一个错误。

在任何情况下,最好使用<input type="TEXT">,因为[type="text"]可以解析它,因此会带来显着的性能优势。