2011-05-12 59 views
33

我试图选择页面上的所有input元素,但不是那些类型为imagebuttonsubmit的元素。我首先想到的是选择所有类型为textinput元素,然后是所有类型checkbox等。是否有“或”属性选择器,如input [type = button | text]?

但是,这不是很优雅。我想知道这里是否有更好的技术。有用的是像input[type=text|checkbox|radio|password|etc]这样的选择器,但这似乎不可用。

我知道我也可以选择全部input s,然后使用.filter()过滤它们,但是是否有更通用的选择器来选择具有属性列表之一的元素?

+0

+1有趣的问题。 – pixelbobby 2011-05-12 18:19:40

回答

44

既然你要包括一切除了少数特殊类型的,试试这个:

$('input:not([type=image],[type=button],[type=submit])') 
+5

不要害怕! – 2011-05-12 18:24:36

+0

+1不幸的是,你的评论比你的回答得到更多upvotes。我尝试改进。 – 2011-05-12 18:26:03

+1

文档:http://api.jquery.com/multiple-selector/ – 2011-05-12 18:26:28

21
$('input[type=text], input[type=checkbox], input[type=radio]').stuff(); 

或(从意见采取)

$('input:not([type=image],[type=button],[type=submit]') 
+4

或'$('input:not([type = image],[type = button],[type = submit])'(把这个评论转移到答案中) – 2011-05-12 18:21:09

+0

这是个不错的选择 – 2011-05-12 18:22:41

+0

@Michael Haren:我在找什么,谢谢! – pimvdb 2011-05-12 18:23:05

5

在CSS中,你可以有这样选择:

input[type=text],input[type=checkbox],input[type=radio],input[type=password] 

也许这部作品在jQuery的为好。

0

我知道它老了,但我觉得最好的优雅的解决方案,这将是给他们一个共同的类然后用它作为选择器?

0

以上答案并不完全正确。

当依赖于id(#)这些方法似乎失败。

根据我的经验,我们需要为每个or声明添加id。

像这样:

$('#id input[type=text], #id input[type=checkbox], ... 
相关问题