我有text
类型的复杂输入元素,其名称类似于product[1][combinations][x][price]
。这个元素有很多,名称的区别仅在于[combinations]
之后和[x]
之后的值。
例如:
product[1][price]
product[1][combinations][x][price]
product[1][combinations][xx][price]
product[1][combinations][xxx][price]
product[1][combinations][xxxx][price]
product[1][sale_price]
product[1][combinations][x][sale_price]
product[1][combinations][xx][sale_price]
product[1][combinations][xxx][sale_price]
product[1][combinations][xxxx][sale_price]
product[2][price]
product[2][combinations][a][price]
product[2][combinations][aa][price]
product[2][combinations][aaa][price]
product[2][combinations][aaaa][price]
product[2][sale_price]
product[2][combinations][a][sale_price]
product[2][combinations][aa][sale_price]
product[2][combinations][aaa][sale_price]
product[2][combinations][aaaa][sale_price]
上述值x
,xx
,xxx
,xxxx
和a
,aa
,aaa
,{{ 1}}代表每aaaa
的唯一值。每个组中的第一个定义(例如product[id]
)表示父级或所有者产品的值,我将批量更新为其子组(组合)。
我想根据存储的信息类型找到这些元素的组,例如product[2][sale_price]
,然后更改其值。我不需要考虑唯一值sale_price
所以我希望我可以使用通配符。
我希望这样的事情可以解决问题(例子):
[x]
然而,我猜$("input[name='product[1][combinations][*][price]'][type='text']").val(0);
并不是真正的通配符,所以我不能那样使用它。
我意识到我可以做这样的事情,但是这会将*
分配给所有输入而不只是0
:
sale_price
如何用适当的外卡替换此($("input[name^='product[1][combinations]'][type='text']").val(0);
)选择器?如果可能的话,我想保持名称数组值的顺序相同
答案 0 :(得分:5)
不确定这是否是你想要的......但是你可以使用带有$
的属性选择器来选择以指定文本结尾的所有输入......所以这将是
$("input[name$='[price]']").val(0);
$("input[name$='[sale_price]']").val(1);
并且您实际上不需要[type='text']
上面的选择器将获得名称以字符串结尾的元素...但是如果您想要更具体并且确保您只需要输入,那么它很好......你也可以在这里添加相同的内容。
<强>更新强>
然后你可以使用多个属性选择器.. ^
来搜索以指定字符串开头的元素
$("input[name^='product[1]'][name$='[price]']").val(0);
$("input[name^='product[1]'][name$='[sale_price]']").val(1);
答案 1 :(得分:3)
您可以使用多个属性选择器:
$("input[name^='product[" + number + "]'][name$='[sale_price]']").val(0);