可能重复:
Custom attributes - Yay or nay?
Non-Standard Attributes on HTML Tags. Good Thing? Bad Thing? Your Thoughts?
在我正在进行的当前学习项目中,我需要添加一个值为数字的属性。起初我想为此目的使用“id”,但an answer显示这样做并不好。
如果我创建自己的属性,说“messid”并为其分配一个数字值,如“12”,“6”等,是否可以?
这就是为什么我想这样做,以便你可以纠正我,如果我做错了: 我需要在我的JavaScript中使用这个数字(使用jQuery)。只是取属性值很容易,但从像“m12”或“m6”这样的字符串中提取数值是一种痛苦。 (我是JavaScript世界的初学者。)
答案 0 :(得分:101)
对此有很多讨论:
在一天结束时,我在营地认为数据属性是最好的方式。它们是在HTML5中引入的,以避免名称冲突。基本上,如果您想存储任何与之相关的数据,只需在属性名称前加上“data-”:
<div class="user" data-userid="5"></div>
对整个事情唯一的看法就是你的XHTML不会验证,但老实说我并不关心那些东西。 (那是对的,我说过了)
答案 1 :(得分:8)
在HTML 5中,您可以添加以data-
开头的任何属性,例如<div data-messid="12">
没问题。
HTML 4和XHTML 1不会验证您是否添加了自己的属性,但如果您选择足够唯一的属性名称(因此它不会与任何当前或未来的HTML属性冲突),则不会发生任何不良情况。 / p>
答案 2 :(得分:5)
您知道,您可以轻松地从字符串中提取ID,例如m12或m6,我会这样做:
//name the IDs m_12, m_3 etc
var number = $('#someElement').attr('id').split('_')[1];
或者,如果说,您在ID中有一堆带有数字的链接,并且所有链接都有clickMe
类:
$('a.clickMe').click(function() {
alert($(this).attr('id').split('_')[1]);
});
答案 3 :(得分:2)
我使用自定义属性,因为我检查的所有浏览器都支持它,我认为使用它们并不坏。你也可以使用自定义HTML标签模拟HTML5,有些IE浏览器,所以为什么不使用属性,如果他们不需要任何黑客攻击?
无论如何,你可以在这里阅读类似的讨论: Custom attributes - Yea or nay?
答案 4 :(得分:1)
这不是一个明确的答案,但过去不得不这样做我可以说这不仅效果很好,而且是跨浏览器友好的。
答案 5 :(得分:1)
如果使用jQuery,您可以使用.data存储元素的自定义信息。
自定义属性的缺点是:
IE6创建额外的对象来存储自定义'expando'属性,这些属性有泄漏的倾向,特别是如果它们是通过脚本创建的。
验证问题
答案 6 :(得分:-8)
不 - it's not。