一个非常普遍的问题。
我正在使用HTML / JavaScript动态生成一个分为多个标签级别的表单。
我想使用CSS和背景图片突出显示某些字段(值与全局模板不同的字段)和星号*符号。
JS字段遍历每个字段,比较其值,并在必要时为其设置CSS类。到目前为止,非常好。
现在另外,我不仅希望每个更改的字段都标有星号,还要标记它所在的标签。
因为我喜欢它简单,我想将选项卡的元素ID存储为每个字段的HTML标记中的某个属性(类似“parentTab”)。 JS函数然后突出显示该字段及其“parentTab”元素(也可能是那个“parentTab”)。
我的第一种方法是滥用“title”属性或somethiong来存储parentTab。当然,这很脏。但是,如果我只是将任意属性添加到DIV或INPUT标签中,它将不再进行验证,我觉得访问这些属性的安全性要低于谁 - 谁知道不同的浏览器如何处理它,并将来会处理它? / p>
所以我的问题是:是否有一种有效的,符合标准的方式 - 某种属性 - 在HTML标签中存储任意数据,以便通过JavaScript进一步处理?
当然,我可以创建一个“parentTabs”JS数组并完成它。但是将它存储在输入本身会更加优雅。
答案 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这样做:一个任意类型的脚本标记。他的例子是关于模板化的,但你可以将它用于任何事情。