输入字段上的Jquery选择器返回prevObject

时间:2017-05-14 12:13:41

标签: jquery

所以基本上我面临的问题是一些奇怪的无法解释的jquery行为。所以,让我们说我有以下html:

<tr onclick='Clicked(this)'></tr>

当我使用这样的函数时,一切都是,正在显示索引:

function Clicked(x) {
    console.log(x);
    console.log("Row index is: " + x.rowIndex);
}

输出:

><tr onclick="Clicked(this)">...</tr>
>Row index is: 1

现在让我们说我不想直接为该行注册该函数,但是对于它的单元格中的输入,但是我想要访问相同的属性排。 我桌子上一排的样本:

<tr>
    <td>
        <input type='text' class='immediate_update' value='myRandomVal'>
    </td>
</tr>

现在我试图从为输入类分配的函数内部访问行和单元属性......就像那样:

$('.immediate_update').change(function(e)
{
    var cell = $(this).closest('td');
    //I've also tried following, but it's returning the same:
    //$(this).parent();
    var row = $(this).closest('tr');
    console.log(row);
    console.log(row.rowIndex);
});

输出:

[tr, prevObject: yt.fn.init(1)]
undefined

这一行的所有属性都没有工作......基本上就是这样 我想问你返回对象之间差异的原因是什么,以及访问输入所在单元格的行和列索引的方法 - 这是什么我需要接受......而且一般来说一些信息也很有用,因为我不知道这是什么问题。提前谢谢!

1 个答案:

答案 0 :(得分:1)

rowIndex是一个纯javascript,如果你需要使用它,你应该使用var row = $(this).closest('tr')[0];但是在jquery中你可以使用.index()

使用rowIndex

进行演示

$('.immediate_update').change(function(e)
{
    var cell = $(this).closest('td');
    //I've also tried following, but it's returning the same:
    //$(this).parent();
    var row = $(this).closest('tr')[0];
    //console.log(row);
    console.log(row.rowIndex);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
      <td>
          <input type='text' class='immediate_update' value='myRandomVal'>
      </td>
  </tr>
  <tr>
      <td>
          <input type='text' class='immediate_update' value='myRandomVal'>
      </td>
  </tr>
  <tr>
      <td>
          <input type='text' class='immediate_update' value='myRandomVal'>
      </td>
  </tr>
</table>

使用index()

进行演示

$('.immediate_update').change(function(e)
{
    var cell = $(this).closest('td');
    //I've also tried following, but it's returning the same:
    //$(this).parent();
    var row = $(this).closest('tr');
    //console.log(row);
    console.log(row.index());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
      <td>
          <input type='text' class='immediate_update' value='myRandomVal'>
      </td>
  </tr>
  <tr>
      <td>
          <input type='text' class='immediate_update' value='myRandomVal'>
      </td>
  </tr>
  <tr>
      <td>
          <input type='text' class='immediate_update' value='myRandomVal'>
      </td>
  </tr>
</table>

  

就个人而言,我不喜欢混合纯粹的javascript和jquery ..而且   虽然你已经包含了jquery,你可以使用它,它更容易