文档章节

jQuery.data() 函数详解

眺望34
 眺望34
发布于 2017/03/08 10:26
字数 881
阅读 0
收藏 0

data()函数用于在当前jQuery对象所匹配的所有元素上存取数据

通过data()函数存取的数据都是临时数据,一旦页面刷新,之前存放的数据都将不复存在。

该函数属于jQuery对象(实例)。如果需要移除通过data()函数存放的数据,请使用removeData()函数。

语法

data()函数有以下两种用法:

用法一

jQueryObject.data( [ key [, value ] ])

以指定的键名key存取数据。如果指定了value参数,则表示以键名key存放值为value的数据;如果没有指定value参数,则表示读取之前以键名key存放的数据;如果没有指定任何参数,则以对象形式返回之前存储的所有数据。

用法二

jQueryObject.data( object )

以对象形式同时传入任意多个key-value形式的数据,对象的每个属性就是键名key,属性值就是value

注意data()函数的所有"存储数据"操作针对当前jQuery对象所匹配的每一个元素;所有"读取数据"操作只针对第一个匹配的元素。

参数

请根据前面语法部分所定义的参数名称查找对应的参数。

参数 描述
key 可选/String类型指定的键名字符串。
value 可选/任意类型需要存储的任意类型的数据。
object Object类型指定的对象,用于封装多个键值对,同时存储多项数据。

返回值

data()函数的返回值是任意类型,返回值的类型取决于当前data()函数执行的是"存储数据"操作还是"读取数据"操作。

如果data()函数执行的是"存储数据"操作,则返回当前jQuery对象本身;如果是"读取数据"操作,则返回读取到的数据。

如果当前jQuery对象匹配多个元素,读取数据时,data()函数只以其中第一个匹配的元素为准。

如果执行data(key)函数(仅传入一个参数key)时找不到相应的数据,则返回undefined。如果执行data()函数(不带任何参数)时找不到相应的数据,则返回一个空的对象(没有任何属性)。

示例&说明

以下面这段HTML代码为例:

<div id="n1">
    <div id="n2">
        <ul id="n3">
            <li id="n4">item1</li>
            <li id="n5">item2</li>
            <li id="n6">item3</li>
        </ul>
    </div>  
</div>

我们编写如下jQuery代码:

var $li = $("li");
// 同时向所有的li元素存储数据
$li.data("name", "CodePlayer");
$li.data("desc", "专注于编程开发技术分享");
$li.data("url", "http://www.365mini.com/");

var $n5 = $("#n5"); // 通过n4、n5、n6都可以读取数据
//  返回键值name所对应的数据
document.writeln( $n5.data("name") ); // CodePlayer

// 以对象形式返回所有的数据
var obj = $("#n6").data();
for(var i in obj){
    document.writeln( i + "=" + obj[i] + "<br>");   
}
/*输出:
name=CodePlayer
desc=专注于编程开发技术分享
url=http://www.365mini.com/
*/

//移除掉n4上存储的键名为name的数据
$("#n4").removeData("name");
// 虽然$li匹配3个li元素,但是读取数据只以第一个li元素n4为准,因此返回undefined
document.writeln( $li.data("name") ); // undefined

var object = { 
        name: "张三",
        age: 18,
        score: [87, 23, 56],
        options: { gender: "男", address: "水帘洞" }
    };

// 同时向所有的div元素以对象形式设置多个key-value数据
// value值可以是任意类型的数据,包括数组、对象等
$("div").data( object );

var $n2 = $("#n2"); // 通过n1、n2都可以读取数据
document.writeln( $n2.data("name") ); // 张三
document.writeln( $n2.data("score") ); // 87,23,56
document.writeln( $n2.data("options") ); // [object Object]

本文转载自:http://www.365mini.com/page/jquery-data.htm

共有 人打赏支持
眺望34
粉丝 0
博文 1
码字总数 0
作品 0
南宁
程序员
私信 提问
jquery数据缓存-data()

返回元素上储存的相应名字的数据,可以用data(name, value)来设定。 如果jQuery集合指向多个元素,那将只返回第一个元素的对应数据。 这个函数可以用于在一个元素上存取数据而避免了循环引用...

dhb_oschina
2013/03/25
0
0
JQuery属性与样式——样式操作.css()和元素数据的存储.data()

样式操作.css()和元素数据的存储.data() 1 .css()方法用于获取元素样式属性的计算值或者设置元素的css属性 2 .css()获取元素样式属性的计算值的2种方法 .css(propertyName)获取匹配元素集合中...

拉考的考拉
2017/11/17
0
0
jQuery.data()的实现

jQuery.data()的实现 知行合一,止于至善2018-01-051 阅读 WEB开发 在jQuery 3 的实现中,当我们通过$("body").data("test")获取数据时通过dataUser 的expando属性从$("body")[0](原生的jav......

知行合一,止于至善
2018/01/05
0
0
问个ie8浏览器的问题

在ie8浏览器下,jquery报错无法获取属性“nodeName”的值,对象为null或未定义。 jquery - 1.8.2.js, 行1718 字符 3 这行代码是:var noData = elem.nodeName && jQuery.Data[ elem.nodeNam...

无知的小狼
2017/10/30
136
2
jQuery 1.6.3 正式发布

jQuery 1.6.3 正式版发布了,这是 1.6 的第三个小的更新版本,主要是大量的bug修复。 下载地址: jQuery 1.6.3 Minified jQuery 1.6.3 Uncompressed 完整的改进记录: Ajax #9255: jQuery.p...

红薯
2011/09/02
2.5K
9

没有更多内容

加载失败,请刷新页面

加载更多

毕业季,我的Linux求职之路

秋招终于告一段落了,本硕的七年求学之路也快画上了句号。回首求职的这一段日子,痛苦并快乐着。感谢所有陪伴着我走过这一段路程的同学,所有的辛酸都值得铭记。求职的过程中在网上看了很多的...

linux-tao
36分钟前
0
0
Mybatis动态语句,if test字符串不用进行null判断

描述:根据creator列进行过滤获取image表的数据。 代码如下: @Select("<script>" + " select * from image " + " <where>" + " <if test='isAllCreator != 1'> ......

Coder顾
56分钟前
0
0
写了2年python,知道 if __name__ == '__main__' 什么意思吗?

相信刚接触Python的你一定有过如此经历,把所有的代码都写在 if __name__ == '__main__'下,因为有人告诉你,这样比较符合 Pythonista 的代码风格。 殊不知这段代码的意义并不是一定要存在于...

上海小胖
今天
5
0
zkong笔记18

这两天的主要工作: Elasticsearch初探 接受ESL的超管功能 ERP开源系统调研

莫在全
今天
3
0
tpcc-mysql的安装和使用

# tpcc-mysql的安装和使用 前言 公司要做Mysql方面性能调优,大概浏览一下Mysql一些参数设置后,想开始尝试进行调整测试。但发现一个问题,测试缺乏标准。所以需要一些基准测试标准或者工具。...

紫暘
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部