2009-08-10 143 views
0

有没有一种方法重构是这样的:我可以选择具有一组属性值的元素吗?

$("input[name='InputName1'],input[name='InputName2']").val(""); 

弄成这个样子:

$("input[name='InputName1|InputName2']").val(""); 

从本质上讲,是有可能根据不重复的部分一组属性值的选择元素的选择?

回答

1

你拥有的第一个版本是关于尽可能短,因为它得到,忽略了特殊情况:

$("input[name^=InputName]") 

我说的特殊情况,因为如果你想随心所欲的名字它不是像他们将有一个方便始终加前缀(我会假设)。

通常我会尽量避免属性选择器。如果我不得不求助于他们,我通常觉得我失败了。尝试使用标记类,其中可能因此而不是:你给他们两个一类的“复位”,并做

$("input[name='InputName1'],input[name='InputName2']").val(""); 

$("input.reset").val(""); 
4

也许你可以给输入一个类?然后你可以使用$('input.clearMe')。

1

可以使用starts with选择

$("input[name^=InputName]") 

我的最佳选择是将然而,因为它执行好类。

+1

应^ =根据文档 – Zed 2009-08-10 11:08:03

+0

是是错字!:) – redsquare 2009-08-10 11:11:00

0

你总是可以编写一个custom selector,如果没有一个默认:)

事实上,你可以使用例如从几乎直接链接的网页...

0

可以使用attribute contains选择$('input[name*=InputName]')在一个属性值匹配的子串。虽然,也许一个常见的rel-attribute或classname会是更好的选择。但我认为这是主观的。

1

除了为输入提供一个类(就像这个问题的另一个答案中所建议的),输入是否可能在DOM中有一个固有的逻辑分组? (例如,全部在表格内的单元格内,或全部在特定格内)。

不是给他们一个类,你可以通过他们的逻辑DOM分组来选择它们,并且如果可能的话,在这个方法的某处添加一个ID来加速选择器的性能。

如果可能的话尽量避免选择类(虽然其他地方例如减轻他们的表现由连词与输入元素找他们打)

相关问题