jQuery的:text选择器区分大小写吗?
例如:
例如:
<input type="TEXT">
不匹配,但是:
<input type="text">
匹配成功。
看起来是这样。我只是在寻求验证。
编辑
在Chrome和Firefox中,即使[type=text]选择器也区分大小写,但在IE8(IE8文档模式下)中不区分大小写。
<input type="TEXT">
不匹配,但是:
<input type="text">
匹配成功。
看起来是这样。我只是在寻求验证。
编辑
在Chrome和Firefox中,即使[type=text]选择器也区分大小写,但在IE8(IE8文档模式下)中不区分大小写。
编辑:尽管我做了研究,但一开始得出了完全错误的结论。答案已更新:O(感谢@ThiagoSantos一开始就给出了正确的答案:D)。
因为 :text 是 jQuery 的扩展而不是 CSS 规范的一部分,使用 :text 的查询无法利用本地 DOM querySelectorAll() 方法提供的性能提升。
如果您深入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
不匹配。令我惊讶的是:更新后的答案应为::text区分大小写
首先,我要说,是的,它是大小写敏感的。请参见这个jsFiddle。
鉴于应该和表现完全一致,我认为这可能是一个bug。
无论如何,最好使用[type="text"],因为它可以被querySelectorAll解析,并且因此具有显着的性能优势。
$(':text')
相当于$('[type=text]')
(http://api.jquery.com/text-selector/)。不像这样:http://jsfiddle.net/ZWfb6/。 - Eliasdx$(':text')
你是将其作为表单元素进行选择,这种情况下它将区分大小写,而使用$('[type=text]')
我们是通过属性选择它的,这不区分大小写。 - Sal:text
。这不是标准的 CSS 选择器。请改用$('input[type="text"]')
。 - RightSaidFred