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.