我可以选择具有一组属性值的元素吗?

时间:2009-08-10 11:02:26

标签: jquery

有没有办法重构这样的东西:

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

这样的事情:

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

基本上,是否可以根据一组属性值选择元素而不选择重复部分?

7 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

您可以使用starts with选择器

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

我喜欢的选择是一个班级,但因为它表现得更好。

答案 2 :(得分:1)

你拥有的第一个版本大约是它的最短版本,忽略了特殊情况:

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

我说特殊情况,因为如果你想要任意名字,那就不像他们会一直拥有那个方便的前缀(我会假设)。

通常我会尝试避免使用属性选择器。如果我不得不诉诸他们,我通常会觉得自己失败了。尽可能尝试使用标记类,而不是:

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

你给他们一个“重置”类,并执行:

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

答案 3 :(得分:1)

this question的答案显示(在another plugin的帮助下)你可以这样做:

$('input:regex(name, InputName[12])')

答案 4 :(得分:1)

除了给输入一个类(正如在这个问题的另一个答案中所建议的),imputs是否有可能在DOM中具有固有的逻辑分组? (例如,表格中的所有单元格,或某个div中的所有单元格)。

您可以通过逻辑DOM分组选择它们,而不是给它们一个类,如果可能的话,在路上的某处添加ID以加快选择器的性能。

如果可能的话,尽量避免按类选择(尽管其他地方的例子通过与input元素一起查找它们来减轻它们的性能)

答案 5 :(得分:0)

如果默认情况下没有custom selector,您总是可以写{{3}}。

事实上,您几乎可以直接使用链接页面中的示例...

答案 6 :(得分:0)

您可以使用attribute contains选择器$('input[name*=InputName]')来匹配属性值中的子字符串。虽然,也许常见的rel属性或类名是更好的方法。但我想这是主观的。