获取上一个数据属性

时间:2017-09-11 13:28:20

标签: javascript jquery html

我需要获取按钮内的先前数据值的值。例如,当我单击第2行时,我需要获取第1行的数据值。我该怎么做?

<table class="table">
  <thead>
    <tr>
      <th>#</th>
      <th>First Name</th>
      <th>Last Name</th>
      <th>act</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Mark</td>
      <td>Otto</td>
      <td><button data-rowid="value">button</button></td>
    </tr>
    <tr>
      <td>2</td>
      <td>Jacob</td>
      <td>tdornton</td>
      <td><button data-rowid="value">button</button></td>
    </tr>
    <tr>
      <td>3</td>
      <td>Larry</td>
      <td>the Bird</td>
      <td><button data-rowid="value">button</button></td>
    </tr>
  </tbody>
</table>
// THIS IS HOW I GET THE CLICKED ROW DATA
var rowid = $(this).data("rowid"); 

注意使用用户Rory的代码。当用户单击第一行时,它将获得“未定义”。我用这个条件更新了代码,但我没有解决问题。正如你所看到的,当我点击第2行时,即时获取行ID 2而不是1,我需要两者。我认为我在这种情况下遇到了问题。

    if ($prevButton === undefined)
    {
        var rowid = $(this).data("rowid"); 
        console.log(rowid);
    }
    else
    {
    var $button = $(this);
    var $prevButton = $button.closest('tr').prev().find('button');
    console.log('Prev button: ' + $prevButton.data('rowid'));               
    }

3 个答案:

答案 0 :(得分:1)

要实现此目的,您可以使用DOM遍历来查找上一行中的按钮,使用closest()prev()find()的组合,如下所示:

$('.table button').click(function() {
  var $button = $(this);
  var $prevButton = $button.closest('tr').prev().find('button');
  
  if ($prevButton.length)
    console.log('Prev button: ' + $prevButton.data('rowid'));

  console.log('This button: ' + $button.data('rowid'));
}); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table">
  <thead>
    <tr>
      <th>#</th>
      <th>First Name</th>
      <th>Last Name</th>
      <th>act</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Mark</td>
      <td>Otto</td>
      <td><button data-rowid="value-01">button</button></td>
    </tr>
    <tr>
      <td>2</td>
      <td>Jacob</td>
      <td>tdornton</td>
      <td><button data-rowid="value-02">button</button></td>
    </tr>
    <tr>
      <td>3</td>
      <td>Larry</td>
      <td>the Bird</td>
      <td><button data-rowid="value-03">button</button></td>
    </tr>
  </tbody>
</table>

答案 1 :(得分:0)

通过jQuery

$('tr').click(function(){
   console.log($(this).prev('tr').find('button').data('rowid'));
});

答案 2 :(得分:0)

您可以使用此代码块:

&#13;
&#13;
$('button[data-rowid="value"]').click(function(){
  var previousTr = $(this).closest('tr').prev();
  if(previousTr.length !== 0){
     var dataValue = $(previousTr).find('td button').data('rowid');
     console.log(dataValue);
  }
 
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table">
      <thead>
        <tr>
          <th>#</th>
          <th>First Name</th>
          <th>Last Name</th>
          <th>act</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1</td>
          <td>Mark</td>
          <td>Otto</td>
          <td><button data-rowid="value">button</button></td>
        </tr>
        <tr>
          <td>2</td>
          <td>Jacob</td>
          <td>tdornton</td>
          <td><button data-rowid="value">button</button></td>
        </tr>
        <tr>
          <td>3</td>
          <td>Larry</td>
          <td>the Bird</td>
          <td><button data-rowid="value">button</button></td>
        </tr>
      </tbody>
    </table>
&#13;
&#13;
&#13;