HTML 5 增加了一项新功能是 自定义数据属性 ,也就是  data-* 自定义属性。在HTML5中我们可以使用以 data- 为前缀来设置我们需要的自定义属性,来进行一些数据的存放。当然高级浏览器下可通过脚本进行定义和数据存取。在项目实践中非常有用。

例如:

html 代码:
  1. <div id = "user" data-uid = "12345" data-uname = "愚人码头" > </div>

使用attribute方法存取 data-* 自定义属性的值

使用attributes方法存取 data-* 自定义属性的值非常方便:

javascript 代码:
  1. // 使用getAttribute获取 data- 属性
  2. var user = document . getElementById ( 'user' ) ;
  3. var userName = plant . getAttribute ( 'data-uname' ) ; // userName = '愚人码头'
  4. var userId = plant . getAttribute ( 'data-uid' ) ; // userId = '12345'
  5. // 使用setAttribute设置 data- 属性
  6. user . setAttribute ( 'data-site' , 'http://www.css88.com' ) ;

此方法能在所有的现代浏览器中正常工作,但它不是HTML 5 的自定义 data-*属性被使用目的,不然和我们以前使用的自定义属性就没有什么区别了,例如:

html 代码:
  1. <div id = "user" uid = "12345" uname = "愚人码头" > </div>
  2. <script>
  3. // 使用getAttribute获取 data- 属性
  4. var user = document . getElementById ( 'user' ) ;
  5. var userName = plant . getAttribute ( 'uname' ) ; // userName = '愚人码头'
  6. var userId = plant . getAttribute ( 'uid' ) ; // userId = '12345'
  7. // 使用setAttribute设置 data- 属性
  8. user . setAttribute ( 'site' , 'http://www.css88.com' ) ;
  9. </script>

这种“原始”的自定义属性和上面 data-* 自定义属性没什么区别,知识属性名不一样。

dataset属性存取data-*自定义属性的值

这种方式通过访问一个元素的 dataset 属性来存取 data-* 自定义属性的值。这个 dataset 属性是HTML5 JavaScript API的一部分,用来返回一个所有选择元素 data- 属性的DOMStringMap对象。

使用这种方法时,不是使用完整的属性名,如 data-uid 来存取数据,应该去掉data- 前缀。

还有一点特别注意的是: data- 属性名如果包含了连字符,例如:data-date-of-birth ,连字符将被去掉,并转换为驼峰式的命名,前面的属性名转换后应该是: dateOfBirth 。

html 代码:
  1. <div id="user" data-id="1234567890" data-name="愚人码头" data-date-of-birth>码头</div>
  2. <script type="text/javascript">
  3. var el = document.querySelector('#user');
  4. console.log(el.id); // 'user'
  5. console.log(el.dataset);//一个DOMStringMap
  6. console.log(el.dataset.id); // '1234567890'
  7. console.log(el.dataset.name); // '愚人码头'
  8. console.log(el.dataset.dateOfBirth); // ''
  9. el.dataset.dateOfBirth = '1985-01-05'; // 设置data-date-of-birth的值.
  10. console.log('someDataAttr' in el.dataset);//false
  11. el.dataset.someDataAttr = 'mydata';
  12. console.log('someDataAttr' in el.dataset);//true
  13. </script>

如果你想删掉一个 data-属性 ,可以这么做: delete el . dataset . id ;  或者 el .dataset . id = null ;  。

看起来很美,哈哈,但是不幸的是,新的 dataset 属性只有在Chrome 8+ Firefox(Gecko) 6.0+ Internet Explorer 11+ Opera 11.10+ Safari 6+浏览器中实现,所以在此期间最好用的getAttribute和setAttribute来操作。

关于data-属性选择器

在实际开发时,您可能会发现它很有用,你可以根据自定义的 data- 属性选择相关的元素。例如使用querySelectorAll选择元素:

javascript 代码:
  1. // 选择所有包含 'data-flowering' 属性的元素
  2. document . querySelectorAll ( '[data-flowering]' ) ;
  3. // 选择所有包含 'data-text-colour' 属性值为red的元素
  4. document . querySelectorAll ( '[data-text-colour="red"]' ) ;

同样的我们也可以通过 data- 属性值对相应的元素设置CSS样式,例如下面这个例子:

html 代码:
  1. <style type ="text/css">
  2. .user {
  3. width : 256px ;
  4. height : 200px ;
  5. }
  6. .user[data-name='feiwen'] {
  7. color : brown
  8. }
  9. .user[data-name='css'] {
  10. color : red
  11. }
  12. </style>
  13. <div class = "user" data-id = "123" data-name = "feiwen" > 1 </div>
  14. <div class = "user" data-id = "124" data-name = "css" > 码头 </div>

更多参阅:

http://ejohn.org/blog/html-5-data-attributes/

demo:

http://html5demos.com/dataset

HTML 5 的data-* 自定义属性的更多相关文章

  1. data自定义属性获取方法和设置

    <!--原生获取方法--> <div data-id="id=1"></div> <script> //js原生获取方法 var i ...

  2. 关于data自定义属性

    新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取.它的数量不受限制,并且也能由JavaScript动态修改,也支持CSS选择器进行样式设置.这使得dat ...

  3. jquery中data()和js中dataset属性的区别

    INTRO html的标签属性data-允许用户自定义属性.原生javascript和jquery分别定义了dataset属性和data()方法对标签中的data属性进行操作. 取值: 如我们定义这样 ...

  4. data-*设置自定义属性注意事项一

    本人才疏学浅,偶遇一个data自定义属性应当注意的小问题,随笔记下. 1.看下面代码:首先在a标签设置自定义两个属性 <a class="btn" href="ja ...

  5. Dom新find

    1.HTML标签和属性是不区分大小写的,但JS是区分大小写的:所以(1)HTML专有的接口的属性应该以小写字母开头,如果属性名由多个单词构成,第二个及接下来的每个单词的首字母都要大写.(2)有些HTM ...

  6. 前端笔记之JavaScript(七)深入函数&DOM那点事

    一.函数补充 1.1 arguments类数组对象 arguments 是一个对应于传递给函数的参数的类数组对象. 在函数中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. ...

  7. 微信小程序基础语法总结

    本文介绍微信小程序语法 配置文件 app.json的配置(全局) { // 用来配置页面的路径 "pages":[ "pages/index/index", / ...

  8. android -------- Data Binding的使用 ( 六) 自定义属性

    今天来说说DataBinding在自定义属性的使用 默认的android命名空间下,我们会发现并不是所有的属性都能直接通过data binding进行设置,比如margin,padding,还有自定义 ...

  9. JQUERY获取html标签自定义属性值或data值

    //获取属性值 1 <div id="text" value="黑哒哒的盟友"><div> jQuery取值: $("#tex ...

  10. 关于使用data()获取自定义属性出现undefined的说明

    这应该是这个函数的一个bug,没有考虑到驼峰式的写法,当我写成驼峰式,即是有大小写的变量时就会出现没有定义的情况. 今天写个交互,需要用到自定义属性,因为这个自定义属性是当作字段用的,就直接用了字段名 ...

随机推荐

  1. C# using的一些事

    一.using释放资源 using不可以释放所有的对象,原因如下: 1.using可以主动释放的对象都需要实现IDisable接口. 2.即使都实现了IDisable接口,也没有必要全部使用using ...

  2. hdu1251 字典树or map

    一道字典树的题,不过看起来用map更为简单 传送门 题意: 给出一堆字符串构成一个字典,求字典里以某字符串为前缀的字符串有几个 思路: 输入字符串时把字符串的前缀全部存进map并标记次数 查询时直接输 ...

  3. hdu2612.。。。

    原题链接 水了一天bfs了 题意:2个人分别从Y,M出发,到达其中任意一个“@” (图中有多个“@”点),2人到达的必须是同一个“@”点,求最短的路程和 思路:bfs搜2次,用一个2维数组记录到达各个 ...

  4. [LintCode] House Robber 打家劫舍

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

  5. Displaying a full list of groups in Odoo's Kanban view

    Kanban view is probably the most flexible view in Odoo. It can be used for many different purposes. ...

  6. 手机自带的显示基站命令(android手机定位,iphone基站定位)

    手机自带的显示基站命令(安卓手机定位,苹果手机基站定位) 分类: 通信和网络2012-02-07 17:48 1734人阅读 评论(0) 收藏 举报 手机htciphone中兴三星网络 安卓手机自带快 ...

  7. 用外部表的方式查询当天数据库alert日志文件

    1环境准备 2查询ORA-开头的错误

  8. Oracle加密表空间进行数据加密的示例

    接上篇:http://www.cnblogs.com/myrunning/p/4292049.html 1查看数据库版本 2查看当前数据库表空间 从这里看到我们此时数据库里没有加密表空间. 3创建加密 ...

  9. 【iCore3 双核心板】例程十四:FATFS实验——文件操作

    实验指导书及代码包下载: http://pan.baidu.com/s/1dEpechF iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  10. XHTML表单

    1.HTML表单标记提供一套元素和属性,用来创建表单,收集网页参观者信息. 2.创建表单结构标记为<form>和</form>. 3.在<form>标记中,我们必须 ...