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