2012-10-30 86 views
3

是否有一种简单的方法来选择所有类型的文本框?jQuery选择器来选择所有类型的文本框

即。 <input type=文本或电子邮件或网址或数字/>

我不介意密码或textarea。

例如。我有这个代码选择所有具有自定义属性('特殊')的文本输入,是否可以缩短?

$("input[type='text'][special],input[type='email'][special],input[type='url'][special],input[type='password'][special]") 
+0

我当然不明白,但如果你可以申请一个特殊的属性,为什么不是一个类? – adeneo

+0

只是为了使它更短,例如。 而不是 Aximili

回答

5

是否:input selector覆盖你感兴趣的情况下?

$(":input[special]") 

文档:

:input selector基本上选择所有表单控件。

附加注释:
由于:input是一个jQuery扩展且不部分CSS规范,采用:input不能采取由本机DOM querySelectorAll()方法提供的性能提升的优点查询。要在使用:input选择元素时实现最佳性能,请首先使用纯CSS选择器选择元素,然后使用.filter(":input")

$("[special]").filter(":input"); 
+0

为什么不只是$(“input [special]”)?但是,这将选择复选框隐藏等 – Aximili

0

您可以使用$(":input[special]")$("[special]").filter(":input");

但我认为这是更快:

$("input").filter(function() { 
    return this.type !== "hidden" && this.getAttribute("special"); 
}); 

或者没有radiocheckbox“ES

$("input").filter(function() { 
    return this.type !== "hidden" && this.type !== "radio" && this.type !== "checkbox" && this.getAttribute("special"); 
}); 

见文档为:input

:input selector基本选择所有形式续ROLS。

附加注释:
由于:input是一个jQuery扩展且不部分CSS规范,采用:input不能采取由本机DOM querySelectorAll()方法提供的性能提升的优点查询。要在使用:input选择元素时实现最佳性能,请首先使用纯CSS选择器选择元素,然后使用.filter(":input")