在我正在进行的当前学习项目中,我需要添加一个值为数字的属性。起初我想为此使用“id”,但一个答案表明这样做不好。
如果我创建自己的属性,说“messid”并为其分配一个数值,例如“12”,“6”等,是否可以?
这就是为什么我要这样做,以便在我完全错误的情况下可以纠正我:我需要在我的 JavaScript 中访问这个数字(使用 jQuery)。仅获取属性值很容易,但从“m12”或“m6”之类的字符串中提取数值却很痛苦。(我是 JavaScript 世界的初学者。)
在我正在进行的当前学习项目中,我需要添加一个值为数字的属性。起初我想为此使用“id”,但一个答案表明这样做不好。
如果我创建自己的属性,说“messid”并为其分配一个数值,例如“12”,“6”等,是否可以?
这就是为什么我要这样做,以便在我完全错误的情况下可以纠正我:我需要在我的 JavaScript 中访问这个数字(使用 jQuery)。仅获取属性值很容易,但从“m12”或“m6”之类的字符串中提取数值却很痛苦。(我是 JavaScript 世界的初学者。)
关于这一点已经有很多讨论:
归根结底,我认为数据属性是最好的方法。它们是在 HTML5 中引入的,以避免名称冲突。本质上,如果你想存储任何相关的数据,你只需在属性名称前加上“data-”:
<div class="user" data-userid="5"></div>
整个事情的唯一缺点是您的 XHTML 不会验证,但老实说,我并不关心那些东西。(没错,我说的)
在 HTML 5 中,您可以添加任何以 开头的属性data-
,因此 eg<div data-messid="12">
是可以的。
如果您添加自己的属性,HTML 4 和 XHTML 1 将不会进行验证,但除此之外,如果您选择的属性名称足够独特(因此它不会与任何当前或未来的 HTML 属性冲突),则不会发生任何坏事。
正如您所知,您可以轻松地从 m12 或 m6 之类的字符串中提取 ID,我会这样做:
//name the IDs m_12, m_3 etc
var number = $('#someElement').attr('id').split('_')[1];
或者,如果说,您有一堆带有数字的链接,如上所述,并且所有链接都具有以下clickMe
类:
$('a.clickMe').click(function() {
alert($(this).attr('id').split('_')[1]);
});
我使用自定义属性,并且由于我检查过的所有浏览器都支持它们,因此我认为使用它们还不错。您还可以使用自定义 HTML 标签来模拟 HTML5,以及一些 IE hack,那么为什么不使用属性,如果它们不需要任何 hack 呢?
无论如何,您可以在这里阅读类似的讨论: 自定义属性 - 是还是不是?
这不是一个明确的答案,但过去不得不这样做,我可以说这不仅效果很好,而且跨浏览器友好。