Retrieve text value from the first row in the same column by class name

Viewed 24

I have a table which will only ever have three rows. There is an image which is an anchor tag in the third row and from the click event of this anchor tag I want to retrieve the text value from the first row in the same column by the class name of thisEventName.

<table id="tblTimedPathwayEvents">
    <tbody>
        <tr>
            <td>Event</td>
            <td class="thisEventName">)Event #1</td>
            <td class="thisEventName">)Event #2</td>
            <td class="thisEventName">)Event #3</td>
        </tr>
        <tr>
            <td>Target Day(s)</td>
            <td>2</td>
            <td>3</td>
            <td>28</td>
        </tr>
        <tr>
            <td>Performed Day</td>
            <td><a class="performedDayLink" href="#"><img src="http://localhost:55223//graphics/pencil-square.jpg" title="Edit"></a></td>
            <td><a class="performedDayLink" href="#"><img src="http://localhost:55223//graphics/pencil-square.jpg" title="Edit"></a></td>
            <td><a class="performedDayLink" href="#"><img src="http://localhost:55223//graphics/pencil-square.jpg" title="Edit"></a></td>
        </tr>
    </tbody>
</table>

I've tried things like this but to no avail

$(this).closest('td').find('.thisEventName').text();
1 Answers

You can use .index() on the parent td, which will give its relative position within its parent (ie will give the column).

var idx = $(this).closest("td").index();

Then you can get the same column's td from the first row

$(this).closest("tbody").find("tr td").eq(idx)

Giving updated snippet:

$(".performedDayLink").click(function() {
  var idx = $(this).closest("td").index();
  var txt = $(this).closest("tbody").find("tr td").eq(idx).text();
  $("#out").text(txt);
  return false;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="tblTimedPathwayEvents">
  <tbody>
    <tr>
      <td>Event</td>
      <td class="thisEventName">)Event #1</td>
      <td class="thisEventName">)Event #2</td>
      <td class="thisEventName">)Event #3</td>
    </tr>
    <tr>
      <td>Target Day(s)</td>
      <td>2</td>
      <td>3</td>
      <td>28</td>
    </tr>
    <tr>
      <td>Performed Day</td>
      <td>
        <a class="performedDayLink" href="#">EDIT 1</a>
      </td>
      <td>
        <a class="performedDayLink" href="#">EDIT 2</a>
      </td>
      <td>
        <a class="performedDayLink" href="#">EDIT 3</a>
      </td>
    </tr>
  </tbody>
</table>
<hr/>
<div id="out"></div>

Related