jQuery选择器中前导冒号的目的是什么?

时间:2012-05-11 13:59:19

标签: jquery jquery-selectors

我已经开始使用Wijmo工具包了,并且在他们的文档页面中遇到了很多与此相似的示例选择器:

$(":input[type='radio']").wijradio();

我这样写过我的话:

$('input[type=radio]').wijradio();

这些做同样的事情还是我缺少的东西?

请注意,上面有两个不同之处:第一个选择器以冒号为前缀,并且输入类型有引号。

3 个答案:

答案 0 :(得分:79)

:inputjQuery extension,而input是CSS选择器。

textareabuttonselect元素将由前者匹配,但不与后者匹配。

后者更快,因此请将其用于特定的radio示例。如果您需要“所有表单元素”,即使它们不是严格的:input标记,也请使用<input>。即使在这种情况下,建议首先使用标准的CSS选择器,然后在该集合上使用.filter(':input')

  

因为:input是jQuery扩展而不是CSS的一部分   规范,查询使用:输入无法利用   本机DOM querySelectorAll()提供的性能提升   方法。使用时输入要达到最佳性能:输入选择   元素,首先使用纯CSS选择器选择元素   使用.filter(“:input”)。

在1.7.2源代码中,:input过滤器针对nodeName测试正则表达式:

input: function( elem ) {
            return (/input|select|textarea|button/i).test( elem.nodeName );
},

答案 1 :(得分:16)

$("input")选择器将仅选择输入类型

的元素

$(":input")选择器将捕获所有输入元素(例如textarea,select,input等...)

有关详细信息,请访问以下:input选择器的jQuery官方文档:

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

答案 2 :(得分:6)

:input选择器基本上选择所有form控件(输入,textarea,select和按钮元素),其中input选择器按标记名称input选择所有元素。

由于单选按钮是form元素,并且它还使用input标记,因此它们都可用于选择单选按钮。然而,两种方法都不同于它们找到元素的方式,因此每种方法都具有不同的性能益