得到父母的第n个孩子

时间:2015-12-01 12:40:37

标签: javascript jquery css css-selectors

我有一个表格,我需要每行的前两个单元格可点击(不是整行)。当我单击第一个或第二个单元格时,我想获得同一行的第三个单元格的值。 为了澄清,当我按a1时,我希望警报显示c1,如果我按b2,我希望它显示c2,如果我按c3我不希望发生任何事情。

正如您所看到的,我的alert($(this).parent(':nth-child(3)').text());不起作用..我怎样才能实现这一目标?

$('td:nth-child(-n+2)').on("click", function(){
   alert($(this).parent(':nth-child(3)').text()); //Doesn't work
});
td{
    border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<table>
    <tr>
        <td>a1</td>
        <td>b1</td>
        <td>c1</td>
    </tr>
    <tr>
        <td>a2</td>
        <td>b2</td>
        <td>c2</td>
    </tr>
    <tr>
        <td>a3</td>
        <td>b3</td>
        <td>c3</td>
    </tr>
</table>

4 个答案:

答案 0 :(得分:8)

您需要使用.closest('tr') ..来选择父级tr和.find()来选择td:nth-child(3)

$('td:nth-child(-n+2)').on("click", function(){
   alert($(this).closest('tr').find('td:nth-child(3)').text());
});

Working Demo

答案 1 :(得分:4)

您可以使用

$('td:lt(2)').on("click", function () {
    alert($(this).parent().find("td:eq(2)").text()); //Doesn't work
});

Fiddle

  • lt(2)将获取索引小于2的指定元素
  • eq(2)将选择索引等于2的元素

答案 2 :(得分:3)

使用此

$(this).parent().children(':nth-child(3)').text()

选择父项,然后选择其子项。

JsFiddle

答案 3 :(得分:0)

这项工作对我来说:

$('table tr').each(function(){
    $(this).find('td:lt(2)').on("click", function () {
           var text = $(this).parent().find("td:eq(2)").text();
           console.log(text);
     });
 });