Ответ 1
Вы хотите вместо .children()
(здесь):
$(this).closest('tr').children('td.two').text();
Я нажимаю ссылку в ячейке таблицы. Мне нужно получить значение конкретной ячейки внутри этой же строки таблицы.
<tr>
<td class="one">this</td>
<td class="two">that</td>
<td class="three">here</td>
<td class="four"><a href="#">there</a></td>
</tr>
<tr>
<td class="one">qwqw</td>
<td class="two">dfgh</td>
<td class="three">ui</td>
<td class="four"><a href="#">there</a></td>
</tr>
У меня есть обработчик кликов, прикрепленный к ссылке в четвертой ячейке. Этот обработчик click вызывает функцию, которая открывает модальное окно. Когда отправляется форма в модальном формате, я также хочу передать значение td class= "two" из строки, в которую была нажата ссылка на этот модальный.
Вот функция, которая отправляет модальную (проблемная область получает правильное значение для var Something):
var Send = function() {
var Name = $( '#name' ).val();
var Something = $(this).closest('td').siblings('.two').text(); // version 1. doesn't work
var Something = $(this).closest('tr').siblings('td.two').text(); // version 2 also doesn't work
var Something = $(this).attr('class'); // version 3. just a test but also doesn't work
$.ajax( {
async: false,
data: { name: Name, somedata: Something },
type: 'POST',
url: the url
});
};
Проблема в том, что я не могу получить правильное значение для Something. Это должно быть значение td class= two в той же строке, что и щелчок.
Как все это происходит вместе. Нажмите целевую ссылку, которая вызывает метод Send_Click(). Send_Click выполняет некоторые проверки, а затем вызывает Send(), но значение для Something никогда не заполняется. Это потому, что this
не то, что я так думаю? Hjelp!
Вы хотите вместо .children()
(здесь):
$(this).closest('tr').children('td.two').text();
Ник имеет правильный ответ, но я хотел добавить, что вы также можете получить данные соты без необходимости использовать имя класса
var Something = $(this).closest('tr').find('td:eq(1)').text();
:eq(#)
имеет индекс на основе нуля (ссылка).
он должен работать нормально:
var Something = $(this).children("td:nth-child(n)").text();
чтобы вы могли использовать parent() для доступа к родительскому tr, а затем использовать find для сбора td со вторым классом
var Something = $(this).parent().find(".two").html();
или
var Something = $(this).parent().parent().find(".two").html();
используйте столько же, сколько parent(), что бы глубина щелкнутого объекта в соответствии с tr row
надеюсь, что это сработает...
Это также будет работать
$(this).parent().parent().find('td').text()