是否可以将自己的属性添加到HTML元素中?

时间:2009-08-20 12:09:45

标签: javascript jquery html

  

可能重复:
  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世界的初学者。)

7 个答案:

答案 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