2010-05-28 56 views
23

我试图在用户点击“单击”时在每个tr中获取第一个td的值。Jquery-获取表中第一个td的值

以下结果将输出aa,ee或ii。我正在考虑使用最接近的('tr')..但它总是输出“对象对象”。不知道该怎么做。

我的HTML是

<table> 
<tr> 
    <td>aa</td> 
    <td>bb</td> 
    <td>cc</td> 
    <td>dd</td> 
    <td><a href="#" class="hit">click</a></td> 

</tr> 
<tr> 
    <td>ee</td> 
    <td>ff</td> 
    <td>gg</td> 
    <td>hh</td> 
    <td><a href="#" class="hit">click</a></td> 
</tr> 
<tr> 
    <td>ii</td> 
    <td>jj</td> 
    <td>kk</td> 
    <td>ll</td> 
    <td><a href="#" class="hit">click</a></td> 
</tr> 

</table> 

jQuery的

$(".hit").click(function(){ 

var value=$(this).// not sure what to do here 

alert(value) ; 

}); 

回答

53
$(this).parent().siblings(":first").text() 

parent给你周围的链接<td>

siblings给出所有<td>标签在<tr>

:first给出集合中的第一个匹配元素。

text()给出标签的内容。

33

这应该工作:

$(".hit").click(function(){  
    var value=$(this).closest('tr').children('td:first').text(); 
    alert(value);  
}); 

说明:

  • .closest('tr')得到最近祖先是<tr>元素(因此,在这种情况下排在<a>元素是)。
  • .children('td:first')获取此元素的所有子元素,但使用:first选择器我们将其减少到第一个<td>元素。
  • .text()获取元素

你可以从其他的答案看,还有比只有一个做到这一点的方式更里面的文字。

+0

你都给予正确的答案!既然你已经有16K了,Tesserex先回答了我。我会将接受的答案提供给Tesserex。非常感谢! +1给你所有。 – FlyingCat 2010-05-28 17:50:09

+0

“.children('td:first')”就是我所需要的。 – radbyx 2013-11-28 06:31:01

3

安装萤火虫并使用console.log而不是alert。然后你会看到你访问的确切元素。

4
$(".hit").click(function(){ 
    var values = []; 
    var table = $(this).closest("table"); 
    table.find("tr").each(function() { 
     values.push($(this).find("td:first").html()); 
    }); 

    alert(values);  
}); 

您应该避免$(".hit")这真的是效率低下。尝试使用事件委派代替。

+0

我认为OP想要获取当前行中第一个单元格的值,而不是所有行。 – 2010-05-28 17:51:41

9

在上面的具体情况,你可以做父母/孩子杂耍。

$(this).parents("tr").children("td:first").text() 
+0

'最接近'只查找当前元素的祖先。你的第二个例子不起作用。你的第一个例子不起作用,或者是因为parent()只在DOM层次上进行级别遍历(你可能是指'parents()')。 – 2010-05-28 17:48:30

+0

为正确性编辑。 – Inaimathi 2010-05-28 18:04:01

2

如果你需要得到所有TD的内部TR,但没有设定这些ID,您可以使用下面的代码:

var items = new Array(); 

$('#TABLE_ID td:nth-child(1)').each(function() { 
     items.push($(this).html()); 
}); 

上面的代码将添加表内的所有第一单元为Array变量。

您可以更改第n个孩子(1)这意味着您需要的任何单元格编号的第一个单元格。

希望此代码可以帮助您。

0

获取上点击最后一个TD首款TD值表

$(this).parent().siblings(":first").text()