2

我有一张像这样的桌子:

<table>
  <tbody>
    <tr>
      <td>
        <input type="text" class="identifier" />
      </td>
      <td class="name">
        Some value
        <input type="hidden" value="Some value" class="hiddenName" />
      </td>
    </tr>

    <tr>
      <td>
        <input type="text" class="identifier" />
      </td>
      <td class="name">
        Some value 2 
        <input type="hidden" value="Some value 2" class="hiddenName" />
      </td>
    </tr>
  </tbody>
</table>

我想要做的是,当具有类标识符的输入的值发生更改时,我想将同一行中类“名称”列中的文本设置为“设置值”,并且隐藏名称值也为改为“设定值”

因此,例如,如果更改了带有类标识符的第二行输入,我希望将标记更改为:

<table>
  <tbody>
    <tr>
      <td>
        <input type="text" class="identifier" />
      </td>
      <td class="name">
        Some value
        <input type="hidden value="Some value" class="hiddenName" />
      </td>
    </tr>

    <tr>
      <td>
        <input type="text" class="identifier" />
      </td>
      <td class="name">
        Set value 
        <input type="hidden value="Set value" class="hiddenName" />
      </td>
    </tr>
  </tbody>
</table>

所以我想出的jquery是:

$('.identifier').change(function () {

    var row = $(this).parent("tr");
    row.find('.hiddenName').val("Set value");
     row.find('.name').text("Set value");
});

然而,这根本不起作用。

有谁知道我做错了什么以及如何解决?

4

5 回答 5

4
$('.identifier').change(function () {
  var $td = $(this).parent().next(".name");
  $td.text("SetValue");
  $td.find(".hiddenName").val("SetValue");
});

小提琴

编辑:在您的最后一次更新中,问题是parent仅在 DOM 树上向上移动一个级别,并且从inputtotd到 totr有两个级别。改用closest@undefined 提出的建议,它会继续前进,直到找到匹配项,它应该可以工作,尽管上面的方法更快:

$('.identifier').change(function () {
    var row = $(this).closest("tr");
    row.find('.hiddenName').val("Set value");
    row.find('.name').text("Set value");
});

小提琴

于 2012-08-20T02:02:19.263 回答
1

您可以使用该closest()方法代替parent,还请注意您的代码中存在语法错误:

$('.identifier').change(function () {
   var row = $(this).closest("tr");
   row.find('.hiddenName').val("Set value");
   row.find('.name').text("Set value");
   // }  this bracket should be removed
});
于 2012-08-20T02:03:15.033 回答
1

你可以试试这个:工作演示 http://jsfiddle.net/f6WKF/

var row = $(this).parent().parent("tr");

并且引号也有语法错误

希望能满足你的需要!:)

代码

$('.identifier').keyup(function() {
    var row = $(this).parent().parent("tr");
    row.find('.hiddenName').val("Set value");
    row.find('.name').text("Set value");
});​
于 2012-08-20T02:08:20.700 回答
1

您也可以尝试使用parents()代替parent()

​$('.identifier').change(function () {   
        var row = $(this).parents("tr");
        row.find('.name').text("Set value");
        row.find('.hiddenName').val("Set value");
 })
于 2012-08-20T02:22:34.700 回答
1

您收到错误是因为您的代码中缺少双引号..

类型="隐藏值="

也许这就是问题所在?

于 2012-08-20T02:26:20.427 回答