jQuery。在动态生成的名称/ ID上匹配的多个项目的更改值

时间:2011-10-25 23:39:41

标签: javascript jquery select dynamic onchange

我有一个动态生成的多个选择/输入对的集合,带有生成的ID。

剥离:

<?php foreach ($products as $product) { ?>
  <select id="option_<?php echo $matching_id; ?>">
    <?php foreach ($options as $option) { ?>
       <option title="<?php echo $inputvalue ?>"></option>
    <?php } ?>
  </select>
  <input id="update_<?php echo $matching_id; ?>" type="text" value="" />
<?php } ?>

我有这个jQuery用所选选项更新输入字段的title属性(因为其他东西需要使用title属性):

$(document).ready(function () {
    $('select').change(function() {
    $('input').val($(this).find("option:selected").attr("title"));
    });
});

当然这是错误的。无论更改哪个选择框,它都会使用相同的值更新所有输入字段。

我只需要更改匹配ID号的输入框。 $ matching_id变量始终是一个数字,如果相关的话。

一些乐于助人的人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

$(document).ready(function () {
    $('select[id^="option_"]').change(function() {
        $('input[id="update_' + $(this).attr('id').replace('option_', '') + '"]').val($(this).find("option:selected").attr("title"));
    });
});

selectid开头时,仅选择"option",不一定要$matching_id为数字。

答案 1 :(得分:0)

$(function(){
   $('select').change(function(){
      $('#update_' + $(this).attr('id').replace(/\D/g,'')).val($(this).find("option:selected").attr("title"));
   });
});

如果任何选择发生变化,它会找到一个元素[input],其id为'update_'加上其自身id的数字部分,并将其值设置为等于所选选项的标题。