2015-12-01 3 views
6

У меня есть таблица, где мне нужны первые две ячейки каждой строки, которые можно кликать (НЕ вся строка). Когда я нажимаю первую или ячейку seccond, я хочу получить значение третьей ячейки той же строки. Чтобы уточнить, когда я нажимаю a1 Я хочу, чтобы предупреждение показывало c1. Если я нажму b2, я хочу, чтобы он показывал c2, и если я нажму c3 Я не хочу, чтобы что-то произошло.Получение nth-child родителя

Как вы можете видеть, мой 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 (я думаю). EDIT: во всяком случае, это то, что вы хотите: '$ (this) .parent(). Children (': nth-child (3)'). Text()' –

ответ

7

вам нужно использовать .closest('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 Вольф сказал, прежде чем, возможно, это не копия/вставка код, возможно, его собственный и, к несчастью, для меня, я отправил его быстрее :( –

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() 

Выберите a 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); 
    }); 
}); 
Смежные вопросы