jQueryselect器中前导冒号的目的是什么?

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

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

我会这样写我的:

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

这些做的是一样的还是有什么我失踪?

请注意,上面有两个区别:第一个select器的前缀是冒​​号,并且有inputtypes的引号。

:input是一个jQuery扩展,而input是一个CSSselect器。

textareabuttonselect元素会被前者匹配,但不会被后者匹配。

后者更快,所以用它来作为你的具体的radio例子。 使用:input当你想要“所有表单元素”时:input ,即使它们不是严格的<input>标签。 即使在这种情况下,build议先使用标准的CSSselect器,然后在该组上使用.filter(':input')

因为:input是一个jQuery扩展,而不是CSS规范的一部分,所以使用:input的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。 为了在使用input:select元素时达到最佳性能,首先使用纯CSSselect器select元素,然后使用.filter(“:input”)。

在1.7.2源代码中,inputfilter根据nodeNametesting一个正则expression式:

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

$("input")select器将只selecttypesinput的元素

$(":input")select器将捕获所有的input元素(如textarea,select,input等…)

有关更多信息,请参阅jQuery官方文档:inputselect器:

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

:inputselect器基本上select所有form控件(input,textarea,select和button元素)作为inputselect器通过标记名称inputselect所有元素。

由于单选button是一个form元素,也使用input标签,所以他们都可以用来select单选button。 然而,两种方法都不同于他们find元素的方式,因此每种方法都有不同的性能优势