码迷,mamicode.com
首页 > Web开发 > 详细

(五)JS学习笔记 - JQuery缓存机制

时间:2014-12-21 12:41:55      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

历史背景

开发中常常因为方便,把状态标志都写到dom节点中,也就是HTMLElement,缺点:

  • 循环引用
  • 直接暴露数据,安全性?
  • 增加一堆的自定义属性标签,对浏览器来说是没意义的
  • 取数据的时候要对HTML节点做操作

根本目的:

使用一种低耦合的方式让DOM和缓存数据能够联系起来

jQuery现在支持两种:

 •$("ele").data() 

 

 1     jQuery.fn.extend({
 2         data: function( elem, name, data ) {
 3             return jQuery.access( this, function( value )){
 4                 //区别在each方法了,处理的是每一个元素dom节点
 5                 this.each(function() {
 6                     
 7                 }  
 8             }
 9         }
10         },
11         ........

 

 

 •jQuery.data( element, key, value ) 

 

1     jQuery.extend({
2         acceptData: Data.accepts,
3         hasData: function( elem ){},
4        //直接调用 data_user.access 数据类的接口,传入的是elem整个jQuery对象
5         data: function( elem, name, data ) {
6             return data_user.access( elem, name, data );
7         },
8         ........

 

 

 

区别: 

 •jQuery.data( element, key, value ) 

每一个element都会有自己的一个{key:value}对象保存着数据,所以新建的对象就算有key相同它也不会覆盖原来存在的对象key所对应的value,因为新对象保存是是在另一个{key:value}对象中

 •$("div").data("a","aaaa")

它是把数据绑定每一个匹配div节点的元素上

 

DEMO

<div id="test">data test</div>

var t1=$("#test");
var t2=$("#test");

//=======第一组=========  $(‘‘").data()方法
t1.data(‘a‘,1111);
t2.data(‘a‘,2222);

t1.data(‘a‘)  //结果222222,被覆盖
t2.data(‘a‘)  //结果222222

//=======第二组=========  $.data()方法

$.data(t1,"b","1111")
$.data(t2,"b","2222")

$.data(t1,"b")   //结果111111,未被覆盖
$.data(t2,"b")   //结果222222

 

(五)JS学习笔记 - JQuery缓存机制

标签:

原文地址:http://www.cnblogs.com/huair_12/p/4176326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!