您的位置:首页 > Web前端 > JQuery

jQuery.data() 函数详解

2015-12-31 15:27 459 查看
转自:http://www.365mini.com/page/jquery-data.htm

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可选/任意类型需要存储的任意类型的数据。
objectObject类型指定的对象,用于封装多个键值对,同时存储多项数据。


返回值

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]


运行代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: