使用$(this).closest(";tr";).find(";td:eq(0)";).text()将值传递给javascript,但表中不包括ID

使用$(this).closest(";tr";).find(";td:eq(0)";).text()将值传递给javascript,但表中不包括ID,javascript,php,jquery,html,mysql,Javascript,Php,Jquery,Html,Mysql,呃,我只是这里的一个学生,我要问的问题可能已经在某个地方被问过了,但是,我只是不知道我在找什么,如果已经问过了,请耐心听我说D:, 反正 -数据来自一个表 -我使用了一个js代码,将表中一行的信息放入文本框中进行编辑 -据说最好的做法是不在表中显示主键 -我尝试过使用td style=“visibility:hidden”或display:none,但这会弄乱桌子的设计,我不知道如何修复它(我尝试过) -是的,主键不包括在显示的行中,我需要更新查询的主键 -我正在考虑将其传递到表单上的input

呃,我只是这里的一个学生,我要问的问题可能已经在某个地方被问过了,但是,我只是不知道我在找什么,如果已经问过了,请耐心听我说D:, 反正

-数据来自一个表

-我使用了一个js代码,将表中一行的信息放入文本框中进行编辑

-据说最好的做法是不在表中显示主键

-我尝试过使用td style=“visibility:hidden”或display:none,但这会弄乱桌子的设计,我不知道如何修复它(我尝试过)

-是的,主键不包括在显示的行中,我需要更新查询的主键

-我正在考虑将其传递到表单上的input type=“hidden”中,但由于js需要将值放在行上,因此我需要在表中包含主键,这是我试图避免的

是否有其他选择或我可以做的事情。 我在这方面的经验非常有限,因此可能有其他方法来解决这个问题,但我还不能太了解它们

$(文档).ready(函数(){
$(“#编辑按钮”)。单击(函数(){
var Firstname=$(this.closest(“tr”).find(“td:eq(0)”).text();
var Lastname=$(this.closest(“tr”).find(“td:eq(1)”).text();
$(“#firstname edit”).val(firstname);
$(“#lastname edit”).val(lastname);
});
});

名字
姓氏
行动



我不明白为什么要隐藏主ID,每个想搞乱数据库的人都知道大多数表都是这样设计的

此外,您的编辑按钮具有以下id:
编辑按钮
,请确保无论何时处理多个结果,每个元素都具有唯一的id

你的脚本现在要做的是选择一个最接近id的元素<代码>编辑按钮
,其中可能有20个

您最好选择。根据按钮的类别单击事件

将按钮代码替换为:

<td><a href="#" class="edit-button">Edit</a></td>

为确保脚本选择适当的最接近的名字和姓氏。

对于不一定需要显示但在某些情况下需要显示的任何数据,最好的位置是在
数据属性中。在您的情况下,您将更改:

echo "<tr>
@Julian Koster指出了代码中的一个重要错误:ID必须是唯一的。因此,与其使用
id=“edit button”
#edit button
请使用
class=“edit button”
。edit button

$(this)。最近的(“tr”)。查找(“td:eq(0)”。text()尽量不要有这样的深链。这些容易破损。
echo "<tr>
echo "<tr data-id='" . $id . "'>
id = $(this).closest('tr').data('id');