2015-12-01 143 views
6

我有一張表,我需要每行可點擊的前兩個單元格(而不是整行)。當我單擊第一個或第二個單元格時,我想要獲取同一行的第三個單元格的值。 要澄清,當我按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>

+1

'示範' ** **必須在問題本身 –

+0

@ A.Wolff嗯,什麼?請詳細說明,我不明白你的意思 –

+1

你必須發佈所有相關的代碼本身,否則你將賺取downvotes(我猜)。編輯:無論如何,這是你想要的:'$(this).parent()。children(':nth-​​child(3)')。text()' –

回答

7

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

@ AlexChar你是對的..更新= D –

+0

嘿,該用戶已暫停投票的違規行爲。 –

+0

@AnoopJoshi那是怎麼回事?我不知道爲什麼?他正在尋找upvotes,因爲我們中的任何一個人都在尋找更多的時間來尋求幫助,而不是upvotes ..我對此並不滿意,因爲@A Wolff之前說過,也許它不是複製/粘貼代碼也許是他自己的,不幸的是他給我發佈的速度更快:(:) –

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
3

使用此

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

選擇pa租,然後是它的一個孩子。

JsFiddle

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); 
    }); 
}); 
相關問題