I click a link in a table cell. I need to get the value of a specific cell within this same table row.
<tr> <td class="one">this</td> <td class="two">that</td> <td class="three">here</td> <td class="four"><a href="#">there</a></td> </tr> <tr> <td class="one">qwqw</td> <td class="two">dfgh</td> <td class="three">ui</td> <td class="four"><a href="#">there</a></td> </tr>
I have a click handler attached to the link in the fourth cell. That click handler calls a function that opens a modal window. When a form in the modal is submitted I want to also pass the value of td class="two" from the row in which the link was clicked to this modal.
Here is the function that sends the modal (the problem area is getting the correct value for var Something):
var Send = function() { var Name = $( '#name' ).val(); var Something = $(this).closest('td').siblings('.two').text(); // version 1. doesn't work var Something = $(this).closest('tr').siblings('td.two').text(); // version 2 also doesn't work var Something = $(this).attr('class'); // version 3. just a test but also doesn't work $.ajax( { async: false, data: { name: Name, somedata: Something }, type: 'POST', url: the url }); };
The problem is that I cannot get the correct value for Something. It should be the value of td class=two in the same row as the clicked element.
The way this all comes together is. Click the target link, that calls a method called Send_Click(). Send_Click does some validations and then calls Send() but the value for Something is never populated. Is this because this
is not what I'm thinking it is? Hjelp!
You want .children()
instead (documentation here):
$(this).closest('tr').children('td.two').text();
Nick has the right answer, but I wanted to add you could also get the cell data without needing the class name
var Something = $(this).closest('tr').find('td:eq(1)').text();
:eq(#)
has a zero based index (link).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With