我有一个表格,可以说3个项目带有数量选择元素。
$someArray = array(
'1',
'2',
'3'
);
foreach($someArray as $k => $v) {
echo "<td>Qty</td>
<td><select class='qty' name='" . $v . "[qty]' id='" . $v . "[qty]'>";
for ($a = 0; $a <= 5; $a++) {
echo "<option value='" . $a . "'>" . $a . "</option>";
}
echo "</select></td>";
}
现在在jquery中,我想这样做,如果你改变任何元素的数量,它会将类数量的所有元素更改为所选的值。我不知道$ v将等于什么,这是db查询结果的动态键。
jquery的
$('.qty').change(function() {
var newQty = $(this).val();
$.each($('.qty'), function() {
var thisId = $(this).attr('id');
alert(thisId+newQty);
$('#'+thisId).val(newQty);
});
});
警报读取正确(1 [数量] 1,2 [数量] 1,3 [数量] 1),但下一行不会更改选择值。元素中的括号内容搞乱了。我该如何调整?
答案 0 :(得分:3)
我不知道为什么你的ID需要括号,但请改为:
$('.qty').change(function(){
var newQty = $(this).val();
$('.qty').val(newQty);
});
类选择器将它应用于该类的所有元素,不需要每个元素。
答案 1 :(得分:1)
是的,问题在于id。在您的情况下摆脱括号可能更容易,但您可以通过转义括号来选择它们。
或者你可以做一些丑陋的事情:
var thisId = $(this).attr('id').replace(']', '\\]').replace('[', '\\['));