jQueryselect器中前导冒号的目的是什么?
我已经开始使用Wijmo工具包,并且在他们的文档页面中遇到了很多与此类似的示例select器:
$(":input[type='radio']").wijradio();
我会这样写我的:
$('input[type=radio]').wijradio();
这些做的是一样的还是有什么我失踪?
请注意,上面有两个区别:第一个select器的前缀是冒号,并且有inputtypes的引号。
:input是一个jQuery扩展,而input是一个CSSselect器。
textarea , button和select元素会被前者匹配,但不会被后者匹配。
后者更快,所以用它来作为你的具体的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器:
:inputselect器基本上select所有form控件(input,textarea,select和button元素)作为inputselect器通过标记名称inputselect所有元素。
由于单选button是一个form元素,也使用input标签,所以他们都可以用来select单选button。 然而,两种方法都不同于他们find元素的方式,因此每种方法都有不同的性能优势