2014-01-20 43 views
1

我一直在玩弄自定义html属性,item-id和类似的东西,并使用它来使我的代码更具可读性(对我而言)。这是一个相当不错的技巧,但我可以像用户数据id属性一样简单。我只是想知道是否有一个合法的理由,为什么这样做会很糟糕。构建我自己的html属性是不好的做法吗?

例子:

<input type="submit" value="submit" custom-item-id="137" /> 

谢谢!

+3

使用HTML 5'数据'前缀属性 – Satpal

+0

和[是它认为不好的做法,使用非标准HTML属性?](HTTP:/ /stackoverflow.com/questions/2117933/is-it-considered-bad-practice-to-use-non-standard-html-attributes?rq=1) –

+0

和[不好的做法是添加非标准属性到DOM元素? - HTML/Javascript](http://stackoverflow.com/questions/4909527/is-it-bad-practice-to-add-non-standard-attributes-to-dom-elements-html-javasc?rq=1) –

回答

4

你会想要为自定义属性做类似data-*的事情。 jQuery具有内置的功能来处理这些属性,并且它是标准的。

< input type="submit" value="submit" data-custom-item-id="137" /> 

这里是一个博客帖子讨论数据属性:http://ejohn.org/blog/html-5-data-attributes/

+0

Thx授权的回复,但我只是想知道为什么它可以使用data-XXX,而不只是自己构建自己的属性。这只是一个约定,还是会打破跨浏览器兼容性或类似的东西? – OneThreeSeven

+0

它不仅仅是一个约定 - 它实际上在HTML5规范中,并且用于任何需要定制html属性的地方 - http://www.w3.org/html/wg/drafts/html/master/dom.html#属性 –

3

如果你data-前缀他们可以创建自己的属性:

<input type="submit" value="submit" data-item-id="137" /> 

即使jQuery的支持这个带有一个内置的方法,它允许(在这个例子中$('input').data('item-id'))与data()函数来获取属性

W3C Reference

自定义数据属性的属性没有命名空间的名字开始机智h字符串“data-”,在连字符后至少有一个字符,是XML兼容的,并且不包含U + 0041至U + 005A(拉丁大写字母A至拉丁大写字母Z)范围内的字符。

自定义数据属性用于存储专用于页面或应用程序的自定义数据,但没有更适当的属性或元素。

+0

@ TimothyL.J.Stewart它只是说'data-'必须尊重XML命名格式(ascii字母,数字,但不在开头,破折号等)与“XML兼容”提及(有链接关于该术语的文档),但不允许使用大写字母,这是在XML兼容标签/属性 –

相关问题