.val()到.text()使用/ with nearest和find

时间:2015-10-27 03:52:42

标签: jquery

请帮忙。 我试图将.val()转换为.text()反之亦然。

我真的不知道哪里出错了。

$('#result').on('click','.update',function() {
    var valval = $(this).closest('tr').find('td:eq(1)').val();
    $(this).closest('tr').find('td:eq(1)').text(valval);
});

和theres链接所以我希望你先打开它。我将感谢能帮助我完成工作的任何答案。 谢谢!

http://jsfiddle.net/J7m7m/595/

3 个答案:

答案 0 :(得分:1)

您需要获取input元素的值,现在您在.val()元素上调用td

$(function() {
  $('#result').on('click', '.update', function() {
    var $td = $(this).closest('tr').find('td:eq(1)'),
      $input = $td.find('input');

    if ($input.length) {
      $td.text($input.val());
    } else {
      $td.html($('<input />', {
        value: $td.text()
      }))
    }
  });
})
body {
  margin: 20px;
  padding: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border='1' id='result'>
  <tr>
    <td>hi there</td>
    <td>
      <input type='text' value="hello there" />
    </td>
    <td>
      <button class='update'>update</button>
  </tr>
  <tr>
    <td>hi there</td>
    <td>hello there</td>
    <td>
      <button class='update'>update</button>
  </tr>
</table>

答案 1 :(得分:1)

.val()用于返回表单输入字段的value属性。您需要定位输入字段,或在第一个语句上使用text()代替val();

var valval = $(this).closest('tr').find('td:eq(1) input').val();

var valval = $(this).closest('tr').find('td:eq(1)').text();

答案 2 :(得分:1)

.val()用于表单元素

而不是$(this).closest('tr').find('td:eq(1)').val(); 您可以使用$(this).closest('tr').find('input[type="text"]').val();$(this).closest('tr').find('td:eq(1) input').val()