当自定义数据属性为json格式字符串时jQuery的data api问题探讨

 更新时间:2013年02月18日 09:22:04   作者:  
当自定义数据属性是一个 json 格式字符串时,缓存的数据如果被修改, 则修改后的数据继续存在于缓存系统中, 如果不留意,这可能导致一些BUG,接下来将对此问题详细概述下
jQuery 的 data API 实现方式有缓存数据的效果
使用 IE 7 (IE8+ 在控制台切换至IE7 模式),当DOM 节点有自定义数据属性时,检查 DOM 节点即可看到 形如 jQuery18305664906559272507 的属性,这便是 用于从数据存储对象中获取自定义数据的建。

当自定义数据属性是一个 json 格式字符串时,缓存的数据如果被修改, 则修改后的数据继续存在于缓存系统中, 如果不留意,这可能导致一些BUG
复制代码 代码如下:

<!DOCTYPE HTML>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
</head>
<body>
<input type="hidden" value="" data-json='{"a":123,"b":456}' id="tst" />
<script>
var node = $("#tst");
console.log(node.attr("data-json"));
var data = node.data("json");
console.log(data);
data.b = 'hello';
var data1 = JSON.parse(node.attr("data-json"));
console.log(data1);
console.log('data===data1',data===data1);
var data2 = node.data("json");
console.log(data2);
console.log('data===data2',data===data2);
var data3 = JSON.parse(node.attr("data-json"));//这样取值不受缓存影响
console.log(data3);
</script>
</body>
</html>

运行结果
复制代码 代码如下:

{"a":123,"b":456}
Object {a: 123, b: 456}
Object {a: 123, b: 456}
data===data1 false
Object {a: 123, b: "hello"}
data===data2 true
Object {a: 123, b: 456}

相关文章

  • layUI布局使用教程

    layUI布局使用教程

    layui属于轻量级框架,简单美化.是用于开发后端模式,它在服务端页面上有非常好的效果,这篇文章主要介绍了layUI布局使用教程,需要的朋友可以参考下
    2022-09-09
  • JS字符串截取出现的bug以及解决方式

    JS字符串截取出现的bug以及解决方式

    之前在获取元素属性时,踩了个坑,记录一下,下面这篇文章主要给大家介绍了关于JS字符串截取出现的bug以及解决方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • 如何防止JavaScript自动插入分号

    如何防止JavaScript自动插入分号

    JavaScript语言有一个机制:在解析时,能够在一句话后面自动插入一个分号,用来修改语句末尾遗漏的分号分隔符。然而,由于这个自动插入的分号与JavaScript语言的另一个机制发生了冲突,即所有空格符都被忽略,因此程序可以利用空格格式化代码
    2015-11-11
  • JS实现侧边栏鼠标经过弹出框+缓冲效果

    JS实现侧边栏鼠标经过弹出框+缓冲效果

    本文主要介绍了JS实现侧边栏鼠标经过弹出框+缓冲效果的实现原理与方法步骤。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • 纯原生js实现table表格的增删

    纯原生js实现table表格的增删

    本文主要介绍了纯原生javascript实现table表格的增删的方法,文章底部提供了完整的代码。需要的朋友一起来看下吧
    2017-01-01
  • javascript布局查看器效果代码

    javascript布局查看器效果代码

    用js直接区分网页布局代码,大家可以看下他的原理
    2008-10-10
  • ES6 javascript的异步操作实例详解

    ES6 javascript的异步操作实例详解

    这篇文章主要介绍了ES6 javascript的异步操作,结合实例形式分析了ES5中异步操作的概念、原理、使用方法及相关注意事项,需要的朋友可以参考下
    2017-10-10
  • JS实现京东放大镜效果

    JS实现京东放大镜效果

    这篇文章主要为大家详细介绍了JS实现京东放大镜效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 改版了网上的一个js操作userdata

    改版了网上的一个js操作userdata

    改版了网上的一个js操作userdata,并根据其它网友的文章结合了下。希望对需要的朋友有所帮助。
    2007-04-04
  • 微信小程序云开发使用方法新手初体验

    微信小程序云开发使用方法新手初体验

    微信小程序云开发使用方法新手初体验,开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论