HTML5新增属性data-*和js/jquery之间的交互

HTML5新增属性data-*

data-*自定义属性,这种方式的自定义属性解决属性混乱无状态管理的现状

书写实例


1. 定义:

data-* 属性用于存储页面或应用程序的私有自定义数据。

data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。

2. 注意点:

data-* 属性包括两部分:

  • 属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符
  • 属性值可以是任意字符串

data-*属性和jQuery交互

使用jQuery中的.data()函数取用data-*属性值

console.log(\(("div").data('lastValue')); //输出的值为:43 console.log(\)("div").data('role')); //输出的值为:page
注意事项

  1. data-**属性名格式驼峰命名改写

  2. data-属性是在第一次使用这个数据属性后不再存取或改变(所有的数据值都在jQuery内部存储)

    演示:
    console.log($("div").data('lastValue')); //输出的值为:43
    $('div').data('lastValue',44); //设置data-last-value=44
    $('div')[2] //假设这是文档中的第3个div,我们输出这个dom
    //输出:

    别怕,你再输出
    console.log($("div").data('lastValue')); //输出的值为:44
    值只是存储在jQuery内部了

使用jQuery中.attr()函数取用data-*属性值

console.log(\(('div').attr('data-role')); //输出的值为:page console.log(\)('div').attr('data-last-value')); //输出的值为:43

使用jQuery中.attr()函数设置data-*属性值

$('div').attr('data-emp',{'name':'zhangsan','age':23}); //给div添加一个data-emp的属性,属性值为一个json对象

注意:破折号要转化成驼峰命名

data-*属性和JS交互

笔者不爱这种方式,但是看到了,就总结整理在这吧

先准备示例:

这种方式总感觉别扭

  1. 设置data-*属性

    //首先采用链式编程,再使用DOM元素上有一个dataset属性,这是一个DOMStringMap类型的键值对集合
    document.getElementById('main').dataset.isBoss = true;
    document.getElementById('main').dataset.emp = {'name':'zhangsan',age:23};
    结果:

    这种方式总感觉别扭

    这就完成了添加两个data-自定义的属性

  2. 读取data-*属性也可以使用dataset这个属性规则是一样的

    console.log(document.getElementById('main').dataset.isBoss); //返回true

    除此之外还可以使用JS原生的getAttribute/setAttribute方法

    document.getElementById('main').setAttribute('data-email','chentging@aliyun.com');
    document.getElementById('main').getAttribute('data-email');

最后注意的是CSS中data-是不可以不带的

posted @ 2017-08-08 13:52  weixsun  阅读(3381)  评论(0)    收藏  举报