繁星——jquery的data()方法

  今天在看JQuery文档的时候偶然看到了data()方法,觉得挺好用的,这里做个记录。

  这个方法用于在元素上存放数据,返回jQuery对象。在文档中提到V1.4.3 新增用法NEW data(obj) 可传入key-value形式的数据。这个方法的用法如下:

  (1)在一个div上存取数据

 1 //HTML代码:
 2 <div></div>
 3 
 4 //JQuery代码:
 5 $("div").data("blah");  // undefined
 6 $("div").data("blah", "hello");  // blah设置为hello
 7 $("div").data("blah");  // hello
 8 $("div").data("blah", 86);  // 设置为86
 9 $("div").data("blah");  //  86
10 $("div").removeData("blah");  //移除blah
11 $("div").data("blah");  // undefined

  (2)在div上存取键值对

1 //HTML代码:
2 <div></div>
3 
4 //JQuery代码:
5 $("div").data("test", { first: 16, last: "pizza!" });
6 $("div").data("test").first  //16;
7 $("div").data("test").last  //pizza!;

  这个方法用来在前端存取数据看起来很方便,实际使用时还需注意以下问题:

  (1)如果jQuery集合指向多个元素,那将在所有元素上设置对应数据。 这个函数不用建立一个新的expando,就能在一个元素上存放任何格式的数据,而不仅仅是字符串。

  (2)当使用.data()获取值时,jQuery会首先尝试将获取的字符串值转化成JS类型,包括布尔值,null,数字,对象,数组: 
      若值是”true|false”,则返回相应的布尔值; 
      若值是”null”,则返回null; 
      若值是纯数字构成的字符串(+data + ”” === data),则返回相应的数字(+data); 
      若值是由(?:\{[\s\S]*\}|\[[\s\S]*\])$,比如”{key:value}“或[1,2,3],则尝试使用jQuery.parseJSON解析之; 
       否则返回字符串值。

  那么,若想获取字符串值而不想获得自动转换的值,可以使用.attr(“data-”+key)来获取相应的值,代码示例如下:

 1 var bieh = $(div).attr(“data-”+bieh) 

 

posted @ 2016-10-31 16:11  kemir_天明  阅读(258)  评论(0编辑  收藏  举报