jQuery11 data() : 数据缓存

简介:
复制代码
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script src="jquery-2.0.3.js"></script>
<script>

$(function(){
    
    $('#div1').attr('name','hello');
    alert( $('#div1').attr('name') );
    document.getElementById('div1').setAttribute('name','hello');
    alert( document.getElementById('div1').getAttribute('name') );
    
    
    
    $('#div1').prop('name','hello');
    alert( $('#div1').prop('name') );
    document.getElementById('div1')['name'] = 'hello';
    alert( document.getElementById('div1')['name'] );

    
    
    $('#div1').data('name','hello');
    alert( $('#div1').data('name') );
});


//DOM元素与对象之间互相引用,大部分浏览器就会出现内存泄漏
var oDiv = document.getElementById('div1');
var obj = {};
oDiv.name = obj;
obj.age = oDiv;

//会出现内存泄漏
$('#div1').attr('name',obj);
//换成,就不用担心内存泄漏
$('#div1').data('name',obj);
$('body').data('age',obj);

//data就是通过cache把dom元素和对象间接的联系到一起。这就防止了内存泄漏。如下图。
var cache = {//
    1 : {
        name : obj
    },
    2 : {
        age : obj
    }
};

</script>
</head>

<body>
<div id="div1" xxx=" "></div>
</body>
</html>
复制代码

复制代码
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script src="jquery-2.0.3.js"></script>
<script>
//对外提供的接口
jQuery.extend({
    acceptData
    hasData
    data
    removeData
    _data
    _removeData
});
//对外提供的接口
jQuery.fn.extend({
    data
    removeData
});
//原型的方法
Data.prototype = {
    key
    set
    get
    access
    remove
    hasData
    discard
};

$(function(){
    $('#div1').data('name','hello');
    alert( $('#div1').data('name') );
    $('#div1').removeData('name');
    alert( $('#div1').data('name') );
    
    
    $.data(document.body , 'age' , 30);
    alert( $.data(document.body,'age') );
    $.removeData(document.body , 'age');
    alert( $.data(document.body,'age') );
    alert( $.hasData(document.body,'age') );
    
    ---------------------------------------------------------
    var obj = { name : "hello" };
    Object.freeze(obj);
    obj.name = 'hi';
    alert( obj.name );//hello,不能被修改。
    
    ---------------------------------------------------------
    var obj = { name : "hello" };
    //第一个参数是禁止修改的对象,后面参数是把obj变成了这个样子obj = { name : "hello",0:{} },并且这个0属性是不能被修改的。
    Object.defineProperty( obj, 0, {
        get: function() {
            return {};
        }
    });
    alert(obj[0]);//object json
    obj[0] = 123;
    alert(obj[0]);//还是 object json,
    obj[name] = 456;
    console.log(obj[name]);//456,
    --------------------------------------------------------
    
    
    $.data(document.body , 'age' , 30);
    $.data(document.body , 'job' , 'it');
            var cache = {//
            1 : {
                age : 30,
                job : 'it'
            },
            2 : {
                age : obj
            }
};
    $.data(document.body ,{ 'age' : 30 , 'job' : 'it' , 'allName' : '课堂'});
            var cache = {//
            1 : {
                age : 30,
                job : 'it',
                'allName' : '课堂'
            },
            2 : {
                age : obj
            }
    $.removeData(document.body , ['age','job','all-name']);
    
    $.data($('#div1'),'name','hello');
});

</script>
</head>

<body jQuery203089541586732714850.8840931279098725="1">
<div id="div1" jQuery203089541586732714850.8840931279098725="2"></div>
</body>
</html>
复制代码
复制代码
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script src="jquery-2.0.3.js"></script>
<script>
$(function(){
    alert($('div').html());//默认获取第一个
    $('div').data();//默认获取第一个
    -------------------------------------------------------------
    $('#div1').data('name','hello');
    $('#div1').data('age','30');
    
    alert($('#div1').get(0).dataset.miaovAll);//h5特性,data-miaov-all="妙味"
    
    console.log( $('#div1').data() );//输出{name:hello,age:30}
    
    
    $('#div1').data({name:'hello',age:'30'});
    
    console.log( $('#div1').data('name-age') );
    
    
    
    $('#div1').data('nameAge','hi');
    $('#div1').data('name-age','hello');
    
    this.cache = {
        1 : {
            'nameAge' : 'hello',
            'name-age' : 'hello' 
        }
    }
    
});
</script>
</head>

<body>
<div id="div1" data-miaov-all="妙味" class="box" title="123">aaaa</div>
<div>bbbb</div>
<div>cccc</div>
</body>
</html>
复制代码

 

相关文章
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
547 1
|
10月前
|
Web App开发 存储 缓存
如何精准清除特定类型或标签的缓存数据?
如何精准清除特定类型或标签的缓存数据?
807 57
|
12月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
9月前
|
存储 缓存 监控
一次缓存引发的文件系统数据不一致问题排查与深度解析
本文详述了一次由自研分布式文件系统客户端 EFC 的缓存架构更新所引发的严重数据不一致问题的完整排查过程。
一次缓存引发的文件系统数据不一致问题排查与深度解析
|
12月前
|
消息中间件 缓存 NoSQL
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
359 32
|
缓存 监控 前端开发
处理页面缓存中数据不一致的问题
【10月更文挑战第9天】
589 122
|
机器学习/深度学习 人工智能 缓存
MHA2MLA:0.3%数据微调!复旦团队开源推理加速神器,KV缓存狂降96.87%
MHA2MLA是复旦大学、华东师范大学、上海AI Lab等机构联合推出的数据高效微调方法,通过引入多头潜在注意力机制(MLA),显著优化基于Transformer的LLM推理效率,降低推理成本。
592 1
MHA2MLA:0.3%数据微调!复旦团队开源推理加速神器,KV缓存狂降96.87%
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
337 5
|
存储 缓存 算法
分布式缓存有哪些常用的数据分片算法?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务需求、数据特征以及系统的可扩展性要求等因素综合考虑,选择合适的数据分片算法,以实现分布式缓存的高效运行和数据的合理分布。
|
消息中间件 缓存 NoSQL
大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey
大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey
362 2

相关课程

更多