具有“价值”属性作为隐藏价值的正确做法

时间:2011-07-07 00:32:42

标签: javascript jquery html

据我所知,value被用作HTML输入属性。

<form action="form_action.asp" method="get">
  <input type="submit" value="Submit form" />
</form>

但是,我想知道,这是一种正确的做法,我可以在其他HTML属性中使用它来充当隐藏价值吗?

例如,对于每个表行,我想用唯一ID标记它,作为SQL数据库中的唯一ID。但是,与此同时,我还想隐藏最终用户的唯一ID。

这是我一直在使用的技术。

<html>
<head>
<title>
XXX
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

<script type="text/javascript">
 $(document).ready(function() {
    $('.delete-button').click(function() {
        var clicked = $(this);
        alert(clicked.parent('tr').attr('value'));
    });    
 });
</script>

</head>
<body>

<table style="border-style:none">
    <tbody>
        <tr>
            <th>Server Name</th>
            <th>IP Address</th>
        </tr>
        <tr style="border-style:none" value="ROW ID 1">
            <td class="edit">Yahoo Server</td>
            <td class="edit">196.168.0.1</td>
            <td class = "delete-button" style="border-style:none"><a href="">DELETE</a></td>
        </tr>
        <tr style="border-style:none" value="ROW ID 2">     
            <td class="edit">Google Server</td>
            <td class="edit">196.168.0.2</td>
            <td class = "delete-button" style="border-style:none"><a href="">DELETE</a></td>
        </tr>
    </tbody>
</table>

</body>
</html>

由于我不经常使用HTML和JavaScript,我想知道上述是否是一种正确且常用的技术?

5 个答案:

答案 0 :(得分:3)

使用严格的HTML4 / XHTML,您不应在标签上创建任意属性。您可以,但它对于架构无效。

使用HTML5,最佳做法是使用data- attributes

例如

<tr style="border-style:none" data-rowid="ROW ID 1">
    <td class="edit">Yahoo Server</td>
    <td class="edit">196.168.0.1</td>
    <td class="delete-button" style="border-style:none"><a href="">DELETE</a></td>
</tr>

答案 1 :(得分:0)

我建议使用属性,而不是使用值。 JQuery支持属性,这是一种非常常见的做法。 http://api.jquery.com/attr/

在初始化时,您可以设置所有属性,然后您可以拥有自己的自定义属性来读取您之前设置的值(然后可以映射到字典或沿着这些行的某些内容)。

这有帮助吗?

答案 2 :(得分:0)

没有。在这种情况下,value是表单组件。 你只需要使用id =“ROW ID 2”或任何你的价值 -

alert(clicked.parent('tr').attr('id'));

此外,这个HTML非常古老。只是我的意见,不要被视为讽刺言论,但对html5和css3的良好评论将是有益的。

答案 3 :(得分:0)

你确定......你可以使用......你甚至可以拥有自己的自定义属性来携带你的数据,除了在源视图中之外,这些数据永远不会显示给最终用户。示例如下:

<tr style="border-style:none" mydata="ROW ID 2">  and it can be accessed as ('tr').attr('mydata')

答案 4 :(得分:0)

是的,你可以使用你想要的任何属性名称

<tr style="border-style:none" rowid="1">

然后在jQuery中,您将通过以下方式访问它:

$('tr[rowid=1]');

或者如果你有一行并想知道它是id:

var rowid = $(this).attr('rowid');