获取行中的第一个和第二个td元素

时间:2013-06-07 17:35:25

标签: asp.net-mvc-3 jquery

我有一个ajax调用附加到表行内的pic的click事件。单击pic并启动click事件后,我需要从该行中获取第一个和第二个td元素。我是jQuery的新手,所以我下面的内容是我最近的尝试(不工作......)。变量firstNamelastName在执行这些行后最终变为undefined

        $('.checkErrors').click(function () {
            var firstName = $(this).parent('tr td:first-child').val();
            var lastName = $(this).parent('tr td:nth-child(2)').val();
            $.ajax({
                type: 'GET',
                url: '@Url.Action("GetErrors","AgentTransmission")',
                data: { term: $(this).attr('id') },
                .
                .
            });
          });

这是一个示例表行。最后一个td元素中的图片包含.click事件。我想抓住包含文本“phinneas”和“ferbseven”的前两个。

<tr>
    <td>
        phinneas
    </td>
    <td>
        ferbseven
    </td>
    <td nowrap>
        7735        
    </td>
    <td>
        Agent
    </td>
    <td>
        SAF
        &nbsp;&nbsp
        07070900  
    </td>
    <td>
        6/5/2013 10:35:38 AM
    </td>
    <td>
        DANTAK
    </td>
    <td class="errorPlus">
        Error
    </td>            
    <td>

        <a href="/AgentTransmission/Details/2358">Details</a>           
            <span> | </span>
        <a href="/AgentTransmission/Edit/2358">Edit</a>        
    </td>
    <td align=center id=2358>
            <img src="/Content/images/magnify.gif" class="checkErrors" id=2358 alt="Program Details" />
    </td>
</tr>

3 个答案:

答案 0 :(得分:6)

使用closest

var $tr = $(this).closest(´tr´);
var firstName = $tr.find('td:first-child').text();
var lastName = $tr.find('td:nth-child(2)').text();

此外,您需要对text元素使用val而不是td,因为它仅对输入控件有意义。

答案 1 :(得分:2)

首先,只有表单元素具有.val属性。

你应该使用.text因为它是td

尝试使用:eq伪相选择器

var $tr;
$tr.find('td:eq(0)').text();

$tr.find('td:eq(1)').text();

答案 2 :(得分:1)

要获取他们的内容,您可以这样做:

var cells = $(this).closest('td').siblings('td');
var firstName = cells.eq(0).text();
var firstName = cells.eq(1).text();

最后两行也可以是:

var firstName = $(cells[0]).text();
var firstName = $(cells[1]).text();