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官方文档:input
select器:
:input
select器基本上select所有form
控件(input,textarea,select和button元素)作为input
select器通过标记名称input
select所有元素。
由于单选button是一个form
元素,也使用input
标签,所以他们都可以用来select单选button。 然而,两种方法都不同于他们find元素的方式,因此每种方法都有不同的性能优势