使用jquery更改下一个td的内容

时间:2016-05-21 13:54:01

标签: javascript jquery html html-table

我有一张表,在每一行中都有一个td标签中的组合框,我想当组合框改变时,下一个td的内容会发生变化

我写了这段代码,但它不起作用:

    $(document).ready(function () {
    $('#table tr td').find('.combobox').change(function () {
        var myvar=$(this).val();
        $.post("./data.php", {
                    p_array : myvar,
                    }, function(data) {
                        $(this).parent().next('td').html(data);
                });
    });
});

表格结构:

<table>
   <tr>
      <td>
         <select class="combobox">
            <option>
                  select something
            </option>
         </select>
      <td>
      <td>must be changed</td>
  <tr>
</table>

问题是什么?

2 个答案:

答案 0 :(得分:1)

帖子中的{p> this在发布之前不是this ...最简单的解决方案是:

$(document).ready(function () {
    $('#table tr td').find('.combobox').change(function () {
        var myvar=$(this).val();
        var xthis = this;
        $.post("./data.php", {
                    p_array : myvar,
                    }, function(data) {
                        $(xthis).parent().next('td').html(data);
                });
    });
});

答案 1 :(得分:1)

当你使用它时,你最好将它缓存在像Flash这样的变量中。 因为这具有另一种含义,当它在另一个范围内时。 你也可以更好地使用最接近元素,所以你确定你有下一个td参考。

$(document).ready(function () {
    $('#table tr td').find('.combobox').change(function () {
        //cache it as soon as possible for performance reasons and readability
        var $this =$(this);
        var myVar = $this.val();
        $.post("./data.php", {
                    p_array : myvar,
                    }, function(data) {
                        $this.closest('td').next('td').html(data);
                });
    });
});