更改具有括号的id的选择值

时间:2014-12-29 20:21:47

标签: javascript jquery

我有一个表格,可以说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),但下一行不会更改选择值。元素中的括号内容搞乱了。我该如何调整?

2 个答案:

答案 0 :(得分:3)

我不知道为什么你的ID需要括号,但请改为:

$('.qty').change(function(){
        var newQty = $(this).val();
        $('.qty').val(newQty);
});

类选择器将它应用于该类的所有元素,不需要每个元素。

答案 1 :(得分:1)

是的,问题在于id。在您的情况下摆脱括号可能更容易,但您可以通过转义括号来选择它们。

或者你可以做一些丑陋的事情:

var thisId = $(this).attr('id').replace(']', '\\]').replace('[', '\\['));