jQuery - 将表格单元格的文本值与单击元素放在同一行中

时间:2010-02-23 01:40:16

标签: jquery jquery-selectors

我单击表格单元格中的链接。我需要在同一个表行中获取特定单元格的值。

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

我有一个点击处理程序附加到第四个单元格中的链接。该单击处理程序调用一个打开模态窗口的函数。当提交模态中的表单时,我还想从链接被点击到该模态的行传递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 = 2的值。

这一切的结合方式是。单击目标链接,该链接调用名为Send_Click()的方法。 Send_Click执行一些验证,然后调用Send(),但从不填充Something的值。这是因为this不是我想的那样吗? Hjelp!

5 个答案:

答案 0 :(得分:81)

您需要.children()代替documentation here):

$(this).closest('tr').children('td.two').text();

答案 1 :(得分:63)

尼克有正确的答案,但我想补充一下你也可以获得单元数据,而不需要类名

var Something = $(this).closest('tr').find('td:eq(1)').text();

:eq(#)的索引为零(link)。

答案 2 :(得分:5)

它应该可以正常工作:

var Something = $(this).children("td:nth-child(n)").text();

答案 3 :(得分:4)

所以你可以使用parent()来访问父tr,然后使用find来收集第二类的td

var Something = $(this).parent().find(".two").html();

var Something = $(this).parent().parent().find(".two").html();

根据tr行使用与parent()一样多的点击对象的深度

希望这有效......

答案 4 :(得分:4)

这也可行

$(this).parent().parent().find('td').text()