data-* 属性用于存储页面或应用程序的私有自定义数据。
data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。
存储的(自定义)数据能够被页面的 JavaScript 中利用,以创建更好的用户体验(不进行 Ajax 调用或服务器端数据库查询)。
data-* 属性包括两部分:
属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符
属性值可以是任意字符串
注释:用户代理会完全忽略前缀为 "data-" 的自定义属性。
有三种方法访问和修改data:
1.使用getAttribute setAttribute 方法
div.setAttribute('data-options',{/*数据*/})
div.getAttribute("data-options");
2.使用dataset属性返回一个集合
div.dataset --> DOMStringMap { options:"{\"name\":\"John\"}", hidden:"true", lastValue:"43"}
可以访问,添加,删除
div.dataset.hidden
div.dataset.newAttr = "123"
delete div.dataset.hidden
3.使用jquery的data方法
.data( key, value )
.data( key, value )
.data( obj ) -->设置多个键值对
.data( key )
.data( key )
.data() -->返回一个集合
jQuery比较特殊的是,它会将返回值字符串自动转换为对应的数据类型。
比如上面的 $("div").data() --> {options : {"name":"John"}, hidden: true, lastValue: 43 }
注意:对于dataset属性和jQuery的data方法: data- 属性名如果包含了连字符,例如:data-last-value ,连字符将被去掉,并转换为驼峰式的命名,前面的属性名转换后应该是:lastValue 。
所谓data-*实际上上就是data-前缀加上自定义的属性名,使用这样的结构可以进行数据存放。使用data-*可以解决自定义属性混乱无管理的现状。确切的说data-*并不是自定义属性,而是解决自定义属性的一种方案。因为大部分自定义属性都是为了在标签上存储数据。
data-*里存储的内容可以使用JavaScript语言直接读取。相比不用data-*自定义属性更容易读取和存储。
data-*可以大大提高工作效率,例如ajax请求后获得的一列数据需要放在li标签里,那么我们在循环生产li标签的同时,可以依次设置data-*属性,这样,我们在写JavaScript语言来 *** 作li标签的时候,可以直接读取自定义的属性来获取li标签对应的数据对象。
data-*自定义属性可以使用jQuery库来解决兼容问题。
HTML中div里有data-index="6" 是自定义属性data-index的值为6的意思。
自定义数据属性的好处:
我们经常需要存储与不同DOM元素相关的信息。这些信息对读者来说可能并不重要,但如果
能够轻松访问它,将使我们的开发人员的生活变得更加轻松。
例如,假设您在网页上列出了不同的餐馆。在HTML5之前,如果您想存储有关餐馆提供的食物
类型或访问者距离的信息,您可以使用HTML class属性。如果您还需要存储餐厅id以查看用户
想要访问的特定餐厅,该怎么办?
为了摆脱这些问题,HTML5引入了自定义数据属性。名称以元素开头的元素的所有属性data-
都是数据属性。您还可以使用这些数据属性来设置元素的样式。
接下来,让我们深入了解数据属性的基础知识,并学习如何在JavaScript中访问它们的值。
正如我之前提到的,数据属性的名称将始终以data-。这是一个例子:
<li data-type="veg" data-distance="2miles" data-identifier="10318">
Salad King</li>
您现在可以使用这些数据属性来搜索和排序访问者的餐馆。例如,您现在可以向他们展示一定
距离内的所有素食餐厅。
扩展资料:
使用自定义属性的注意事项:
1、存储在这些属性中的数据应为string类型。任何可以进行字符串编码的东西也可以存储
在数据属性中。所有类型的转换都需要在JavaScript中完成。
2、只有在没有其他适当的HTML元素或属性时才应使用数据属性。例如,在元素class中存
储元素是不合适的data-class。
3、除data-前缀外,有效自定义数据属性的名称必须仅包含字母,数字,连字符( - ),点
(。),冒号(:)或下划线(_)。它不能包含大写字母。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)