我正在尝试使用jQuery对一组无线电选择进行总结。
<input name="cost[alpha]" type="radio" >
<input name="cost[beta]" type="radio">
<input name="cost[delta]" type="radio">
...
$('input[name="cost[*]"]').each( function() {
...
}
这不起作用,因为它尝试解析名为“cost [*]”的输入。理想情况下,我想迭代成本数组中的任何元素。有没有一种首选的方法来使用jQuery?我的表单中有其他使用无线电类型的元素,因此选择无线电通常不是一个有效的选项。
答案 0 :(得分:6)
将属性选择器设为“starts with”选择器(^=
):
$('input[name^="cost"]').each(function() {
...
});
如果您发现其他输入元素以“cost”或“cost [”开头,那么您可能想要考虑更改查询元素的方式。另一种方法是为您要定位的元素添加一个特殊的类名,并完全忘记它们的名称。例如:
<input name="cost[alpha]" type="radio" class="form-cost">
<input name="cost[beta]" type="radio" class="form-cost">
<input name="cost[delta]" type="radio" class="form-cost">
然后你的选择器非常简单且非常有针对性:
$('input.form-cost').each(function() {
...
});
您可以通过简单地将元素包装在具有唯一ID或类名的容器中,并查询其包含的输入元素(如评论中的Allende所示)来获得最佳性能:
<div id="cost-inputs">
<input name="cost[alpha]" type="radio">
<input name="cost[beta]" type="radio">
<input name="cost[delta]" type="radio">
</div>
$('#cost-inputs input').each(function() {
...
});
答案 1 :(得分:2)
尝试使用jquery中的contains选择器
$("input[name*='cost[']").each(function(){});
答案 2 :(得分:1)
尝试:
var sum = 0;
$("input[name^='cost']").each(function() {
sum += Number($(this).val());
});
关于“以选择器开始”:[name ^ =“value”]
https://api.jquery.com/attribute-starts-with-selector/