在JavaScript的HTML标记中存储任意信息?

时间:2009-10-21 10:59:59

标签: javascript html tags

一个非常普遍的问题。

我正在使用HTML / JavaScript动态生成一个分为多个标签级别的表单。

我想使用CSS和背景图片突出显示某些字段(值与全局模板不同的字段)和星号*符号。

JS字段遍历每个字段,比较其值,并在必要时为其设置CSS类。到目前为止,非常好。

现在另外,我不仅希望每个更改的字段都标有星号,还要标记它所在的标签

因为我喜欢它简单,我想将选项卡的元素ID存储为每个字段的HTML标记中的某个属性(类似“parentTab”)。 JS函数然后突出显示该字段及其“parentTab”元素(也可能是那个“parentTab”)。

我的第一种方法是滥用“title”属性或somethiong来存储parentTab。当然,这很脏。但是,如果我只是将任意属性添加到DIV或INPUT标签中,它将不再进行验证,我觉得访问这些属性的安全性要低于谁 - 谁知道不同的浏览器如何处理它,并将来会处理它? / p>

所以我的问题是:是否有一种有效的,符合标准的方式 - 某种属性 - 在HTML标签中存储任意数据,以便通过JavaScript进一步处理?

当然,我可以创建一个“parentTabs”JS数组并完成它。但是将它存储在输入本身会更加优雅。

5 个答案:

答案 0 :(得分:22)

通过引入html5,您可以使用attributes that start with data-,他们仍然会验证。

<input type="text" name="username" data-parentTab="tab1" value="non-default">

答案 1 :(得分:2)

您可以通过编写isChildOf函数找出字段所属的选项卡元素,如下所示:http://jimkeller.blogspot.com/2008/07/jquery-ischildof-is-element-child-of.html

使用DOM来解决这个问题总是比以某种自定义格式复制数据更“优雅”。

答案 2 :(得分:2)

rel属性通常是存储此类数据的绝佳选择。

答案 3 :(得分:1)

在jQuery中你有这个问题的数据API。 http://docs.jquery.com/Internals/jQuery.data

如果您不使用jQuery,您可以添加自己的标签并在其中存储任何内容。 每个人都会告诉你这不是很好,但所有伟大的网络公司都在这样做。所以你最终会成为一家伟大的公司; - )

答案 4 :(得分:0)

我喜欢John Resig这样做:一个任意类型的脚本标记。他的例子是关于模板化的,但你可以将它用于任何事情。