【问题标题】:Editable row in a table - is using the record ID on a <tr> element bad practice?表中的可编辑行 - 在 <tr> 元素上使用记录 ID 是不好的做法吗?
【发布时间】:2024-05-23 22:55:02
【问题描述】:

我正在尝试使用 jquery 制作一个功能来编辑类别名称的 HTML 表。

到目前为止,我的表是使用 PHP/MySQL 填充的。这一切正常。

我已经阅读了jQuery - Edit a table row inline,但这似乎并没有解决如果您想将记录保存回数据库时如何识别记录的问题。

我见过这样的解决方案:

<tr id="2">
  <td>Foo</td>
</tr>
<td id="3">
   <td>Bar</td>
</td>

这种在tr 元素上使用ID 的方法是否可以接受?它似乎有点落后,因为这不是我真正理解的应该在标记中使用 ID 的方式?例如,如果您有多个表(在我的情况下不是这样),标记中的所有 ID 都应该是唯一的,这样会是不好的做法吗?

有没有更好的方法来处理这个问题?

仅提供一些背景信息,这就是我想要实现的目标:

  1. 表格在页面加载时呈现。
  2. 点击表格行上的“编辑”按钮。
  3. 这会使该行变为可编辑 - 我相信可以对我发布的链接使用类似的内容。
  4. 将“编辑”按钮更改为“保存”。单击此按钮会触发 ajax 调用,但这需要将行 ID 和文本框值发送回我的 PHP 脚本。

数据比较简单——每个表行只有一个ID和类别名称。

【问题讨论】:

  • 我个人认为这很好。 id 属性应该识别元素,这就是你正在做的,不管id 内容的来源。
  • 但我认为 ID 只应该在一组标记中使用一次(唯一)?我没有多个表,但如果我有,并且它们都有,例如, 那是无效标记吗?
  • 是的,但鉴于 id 值来自您的数据库,不应该有任何重复 - 我希望没有比 HTML 更大的问题
  • 没有重复,只有 1 个表。但考虑一下您在同一网页上编辑 2 个(或更多)不同表格的情况。可能有相同的记录 ID - 如果它们存储在多个表中。例如,数字“3”可以是我的类别表中的一个 ID,也可以是一个帖子表。但是您不应该在标记中使用它作为 ID,因为那样它会是重复的?
  • 在这种情况下,我会在 id 值前面加上前缀,例如 cat-3post-3

标签: php jquery html


【解决方案1】:

您应该查看的是data attributes

你如何使用它们是..

<tr data-id="2">
 <td>Foo</td>
 ....
</tr>
<tr data-id="3">
 <td>Bar</td>
 ....
 </td>

假设您需要获取点击行的 id,您可以使用.data() 方法来实现。

...
$('tr').on('click', function(){
 id = $(this).data('id');
 ...
});
...

【讨论】:

  • 我试图编辑这个,$('tr') - 需要在“tr”上加上引号。我无法编辑它,因为它说编辑必须至少为 6 个字符。不过效果很好,非常感谢。
猜你喜欢
相关资源
最近更新 更多
热门标签