作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 00:09:55 阅读 我要评论

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}

  推荐阅读

  js模拟滚动条(横向竖向)

JS: 复制代码 代码如下:(function(win){ var doc = win.document,db = doc.body; var mousewheel = 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll'; var skyScroll = function(opts)>>>详细阅读


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

地址:http://www.17bianji.com/kaifa2/JS/22331.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)