获取jQuery表中的第三个单元格
我以为我能处理好这件事,但显然不行。我们又来了。我想要单元格的值,两个空格的值,从我点击的地方。这将是该行的第三列。下面是一些需要理解的代码 我这样创建表 php获取jQuery表中的第三个单元格,jquery,Jquery,我以为我能处理好这件事,但显然不行。我们又来了。我想要单元格的值,两个空格的值,从我点击的地方。这将是该行的第三列。下面是一些需要理解的代码 我这样创建表 php $project_info = $db->prepare(" SELECT projects.id, projects.project_name, projects.pm, // ...more columns F
$project_info = $db->prepare("
SELECT projects.id,
projects.project_name,
projects.pm,
// ...more columns
FROM projects
WHERE account_id = ?
");
$project_info->bindValue(1, $aid, PDO::PARAM_STR);
$project_info->execute();
echo "<table class='projects_contentTable'>";
echo "<th class='content_th'>" . "" . "</th>";
echo "<th class='content_th'>" . "" . "</th>";
echo "<th class='content_th'>" . "Job #" . "</th>";
// ...more headers
while ($row = $project_info->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td class='content_td'>" . "<img src='images/edit.png' class='edit_project_record'/>" . "</td>";
echo "<td class='content_td'>" . "<img src='images/view.png' class='view_project_record'/>" . "</td>";
echo "<td class='content_td'>" . "<a href='#'>" . $row['id'] . "</a>" . "</td>";
// ...more td's
echo "</tr>";
}
echo "</table>";
现在,当警报触发时,对话框中没有任何内容。因此,我没有从正确的单元格中获取值。我试图从逻辑上把它分解,但我被卡住了。这是我的理解,这显然是错误的
请向我解释我的逻辑在哪里被破坏,这样我就可以解决这个问题。谢谢你考虑到
eq
是基于零的,所以如果你想得到第三列,你需要使用eq(2)
正如其他答案已经指出的那样,家长不会给您该行,因为
此
家长就是td
。您可以使用您可以使用.closest()
查找行,然后查找单元格(0基于eq
):
如果您确实希望单元格2位于您单击的单元格的右侧
$('.projects_contentTable').on('click', 'td img', function() {
var myTD = $('td').index(this);
var pid = $(this).closest('tr').find('td:eq(myTD + 2)').text();
alert(pid);
loadEditProject();
});
有几件事:
:eq()
是基于零的,因此需要td:eq(2)
$(this)
是图像,因此$(this).parent()是td
find()
搜索子体,在您选择的td
中没有td
s
$(this).closest('tr').find('td:eq(2)').text();
closest()
从当前元素开始,向上遍历DOM,直到找到与选择器匹配的元素。从父级tr
,您可以查找td
s
Fiddle,用div代替image:谢谢Jason,这很有魅力,解释正是我需要的,所以我希望不用再问这样的问题了+1和answer AcceptedId您每次只想看到第3列,还是只想看到单击位置的单元格2列?仔细看下面的答案。他们中的大多数人只是选择了第三列,不管点击发生在哪里。@DevlshOne是的,我不想要任何第三列。我想要单击发生时所在行的第三列。我也不想要:nth child(x)值,因为它将返回列中的所有值。谢谢你指出这一点是的,我看到杰森的回答。这正是我需要的解释。非常感谢你+感谢你的帮助+1另一种正确的方法,我刚刚注意到你的评论。这是否意味着Jason的答案不会产生相同的结果?因为它现在给了我想要的价值。与yoursJason的答案相同,因为他的脚本只有在单击类编辑项目记录时才会触发,这是单元格的第一列。因此,当它返回第三列时,它做的是正确的。我的答案可以用于任何单元格,因为它不是由特定类别触发的,只是由td
中的img
触发的。因此,它可以是第16个单元格中的img
,并返回第18个单元格的文本。英雄联盟你明白了吗?事实上,是的,这是一个很棒的解释。谢谢你,托尼,我还有一个问题,这个问题反过来也行吗。比如说图像在第13个单元格中,如果你把('td:eq(myTD-2)
放进去,它会返回第11个单元格的值吗?是的,它肯定会返回,但你需要检查并确保myTD>2
。我认为这种方法不适合使用负数
$('body').on('click', '.edit_project_record', function() {
pid = $(this).closest('tr').find('td:eq(2)').text();
alert(pid);
loadEditProject();
});
$('.projects_contentTable').on('click', 'td img', function() {
var myTD = $('td').index(this);
var pid = $(this).closest('tr').find('td:eq(myTD + 2)').text();
alert(pid);
loadEditProject();
});
$(this).closest('tr').find('td:eq(2)').text();