【问题标题】:getting nth-child of parent得到父母的第n个孩子
【发布时间】:2016-03-05 09:25:52
【问题描述】:

我有一个表格,我需要每行的前两个单元格可点击(不是整行)。当我单击第一个或第二个单元格时,我想获取同一行的第三个单元格的值。 澄清一下,当我按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>

【问题讨论】:

  • 'demo' 必须本身就有问题
  • 您必须自己发布所有相关代码,否则您将获得反对票(我猜)。编辑:无论如何,这就是你想要的:$(this).parent().children(':nth-child(3)').text()
  • 更好?我做了一个超级最小的例子,所以没有太多代码可以发布。此外,问题已明确说明(当前行为、期望行为)
  • 感谢更新,现在我们可以投票了... :)
  • 只有 jsFiddle 的问题是一旦链接失效,你的问题就没有意义了

标签: javascript jquery css css-selectors


【解决方案1】:

您需要使用.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

【讨论】:

  • 您好,该用户因投票违规而被暂停。
  • @AnoopJoshi 怎么样?我不知道为什么?他正在寻找赞成票,因为我们中的任何人都在寻找更多的帮助而不是赞成票。我对此不满意..正如@A Wolff之前所说,也许这不是复制/粘贴代码可能是他自己的,不幸的是我把它发布得更快:( .
  • 他因投票违规而被停职。我认为他可能会从一些假用户那里得到帮助以获得更多的赞成票/使用自己的一些重复 id 来获得赞成票。这不是因为没有比你慢。 :)
  • @AnoopJoshi 真是令人震惊:( .. 我虽然够快 :) :) .. 谢谢你让我知道 :)
  • 他的停赛期为 1 周。在那之后他会拿回他的分数,除了那些来自假身份证的分数。
【解决方案2】:

使用这个

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

选择父级,然后选择它的子级。

JsFiddle

【讨论】:

    【解决方案3】:

    你可以使用

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

    Fiddle

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

    【讨论】:

      【解决方案4】:

      这对我有用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-13
        • 2013-09-03
        • 2020-05-25
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多