HTML5 Note #3: HTML5 Custom Data Attributes (data-*)

Article #3: HTML5 Custom Data Attributes (data-*)


*Reason: *首先说明一下,自己对于文章的选取并没有按照某些固定的标准顺序,而是因为之前自己做 case 时遇到一些困惑的地方,而某篇文章正好激发起自己深入了解的兴趣,所以才选择细读做笔记。


语法

属性名称
属性名必须以 'data-' 作为前缀,且至少有一个字母,不可大写。

属性值
属性值可以为任意的字符串

为什么要用 data-* 属性 ?

很久很久以前,在需要对每一个元素存储数据时,大家习惯使用 class 或者 rel 。自然,这么做确实可以获得相应数据,但是这样造成了语义混乱。于是 data-* 出现了,我们可以用 JavaScript 使用这些数据去创造更丰富更吸引人的用户体验,并且无需担心与服务器端产生更多的 Ajax 交互。

什么时候可以用自定义 data 属性呢?

  • 存储元素的初始高度或者透明度,之后可以被用于计算 JavaScript 的动画效果。
  • 存储通过 JavaScript 加载的 Flash 视频参数。 (不大能理解)
  • To store custom web analytics tagging data. (翻译无能,灰常灰常不能理解)
  • 存储 JavaScript 游戏中元素需要的生命值呀、剩余弹药呀什么的。
  • 增强 JavaScript <video> 子标题的可访问性。 (也不大能理解)

用原生 JavaScript 读取 data-* 属性

  1. 可以使用 getAttribute 和 setAttribute 当做普通属性访问,这个在任何浏览器中都能够使用
  2. 使用新的 HTML5 JavaScript API - dataset property,需要支持 HTML5 的现代浏览器

Warning !

如果使用一些缺乏想象力的属性名时,比如 data-height 这样普通滴名字,就很有可能和其他的脚本文件或者引用的 library / plugin 产生冲突。所以建议在普通的名字前面加上关乎这个页面的前缀,比如 data-html5doctor-height。


拓展


需要注意什么?

不要在 data 属性中存储应该可见且可获取的内容,因为辅助工具很可能获取不到这些信息。另外,搜索引擎爬虫也无法为这些 data 属性值建立索引。(参见 Using data-* attributes

如何用 jQuery 取值和赋值?

  • 取值:

    你可以传统一点这么做

      $(selector).attr("data-attribute-name")
    

    或者按照推荐标准这么做( 如果 jQuery >= 1.4.3 的话)

      $(selector).data("attribute-name")
    
  • 赋值

    可以这么做

      $(selector).attr("data-attribute-name", "attribute-value")
    

    或者这么做

      $(selector).data("attribute-name", "attribute-value")
    

事实上,jQuery.data() 和 javascript 中的 .dataset 还是有些区别的。通过 jQuery.data() 方法设置 data 属性不会修改 DOM ;而通过 dataset 方法则会同步修改 DOM。(参见 [dataset vs jQuery.data()]((http://jsperf.com/dataset-vs-jquery-data) )


问题


比如在网页版的 listing 中,现在对于每一条 AD 无论其是不是智能插播的 AD 都有一个 data-cpm-sign 属性在,只是智能插播的 AD 有属性值,而普通的 AD 没有属性值而已,比如下面:

<li data-aid="304104949" data-cpm-sign="" class="media clearfix ">……</li>

我认为比较轻巧的方法是只为智能插播的 AD 添加 data-cpm-sign 属性,可是自己不够熟悉 jade,而根据物理哥和三哥的说法是现在还不能够做到这样。但是自己还是想试试有没有方法改一改。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容

  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,344评论 0 44
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 114,212评论 24 450
  • 第一章 jQuery简介 1-1 jQuery简介 1.简介 2.优势 3.特性与工具方法 1-2 环境搭建 进入...
    mo默22阅读 1,570评论 0 11
  • 优秀有千百种定义。在我的字典里,只要能把生活过程自己想要的样子,又或者更棒地把世界变成了更好的样子,便是足够优秀的...
    __HeroFox阅读 179评论 0 0
  • 2014年的时候,我和一群年龄相仿的小伙伴一起进入了同一个单位。那时候,除去家庭背景,看起来都差不多。但是差距总是...
    冬冬小眠阅读 242评论 3 2