I am trying to get the value of first td in each tr when a users clicks \"click\".
The result below will output aa ,ee or ii. I was thinking about using closest(\'t
This should work:
$(".hit").click(function(){
var value=$(this).closest('tr').children('td:first').text();
alert(value);
});
Explanation:
<tr>
element (so in this case the row where the <a>
element is in).<td>
element.As you can see from the other answers, there is more than only one way to do this.
In the specific case above, you could do parent/child juggling.
$(this).parents("tr").children("td:first").text()
$(this).parent().siblings(":first").text()
parent
gives you the <td>
around the link,
siblings
gives all the <td>
tags in that <tr>
,
:first
gives the first matched element in the set.
text()
gives the contents of the tag.
$(".hit").click(function(){
var values = [];
var table = $(this).closest("table");
table.find("tr").each(function() {
values.push($(this).find("td:first").html());
});
alert(values);
});
You should avoid $(".hit")
it's really inefficient. Try using event delegation instead.
Install firebug and use console.log
instead of alert
. Then you will see the exact element your accessing.
If you need to get all td's inside tr without defining id for them, you can use the code below :
var items = new Array();
$('#TABLE_ID td:nth-child(1)').each(function () {
items.push($(this).html());
});
The code above will add all first cells inside the Table into an Array variable.
you can change nth-child(1) which means the first cell to any cell number you need.
hope this code helps you.