将自己的属性添加到HTML元素可以吗?

可能重复:
自定义属性 – 是或否?
HTML标签上的非标准属性。 好东西? 坏事? 你的想法?

在当前正在学习的项目中,我需要添加一个值为数字的属性。 起初我想到用“id”来达到这个目的,但是答案显示这样做不好。

如果我创build自己的属性,说“messid”,并指定一个数值,如“12”,“6”等,它可以吗?

这就是为什么我想这样做,以便您可以纠正我,如果我完全错了:我需要在我的JavaScript(使用jQuery)访问这个数字。 只要取属性的值很容易,但从一个像“m12”或“m6”string中提取数值是一个痛苦。 (我是JavaScript世界的初学者。)

有很多讨论关于这个:

  • 自定义属性 – 是或否?
  • 如何存储一些HTML标签的任意数据
  • HTML标签上的非标准属性。 好东西? 坏事? 你的想法?

在这一天结束的时候,我认为数据属性是最好的select。 他们正在引入HTML5,以避免名称冲突。 本质上,如果你想存储任何与你有关的数据,只需在属性名称前加上“data-”:

<div class="user" data-userid="5"></div> 

唯一的一件事情就是你的XHTML不会被validation,但是我真的不关心这些东西。 (没错,我说了)

在HTML 5中,您可以添加以data-开头的任何属性,例如<div data-messid="12">是可以的。

如果您添加自己的属性,HTML 4和XHTML 1将不会validation,但是如果您select的属性名称足够独特(所以它不会与任何当前或未来的HTML属性发生冲突),则不会发生任何错误。

只要你知道,你可以很容易地从一个像m12或m6string中提取一个ID,我会这样做:

 //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]); }); 

我使用自定义属性,并且由于我检查的所有浏览器都支持它,所以我认为使用它们并不坏。 你也可以使用自定义的HTML标签来模拟HTML5,有一些IE黑客,所以为什么不使用属性,如果他们不需要任何黑客?

无论如何,你可以在这里阅读类似的讨论: 自定义属性 – 是或不是?

这不是一个明确的答案,但过去我不得不这样做,我可以说这不仅工作得很好,而且是跨浏览器友好的。

如果使用jQuery,可以使用.data来存储自定义信息。

自定义属性的缺点是:

  • IE6创build额外的对象来存储自定义的“expando”属性,这些属性有泄漏的倾向,特别是如果它们是通过脚本创build的。

  • validation问题

不 – 不是的 。