首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过引用禁用jquery数据函数返回值?

如何通过引用禁用jquery数据函数返回值?
EN

Stack Overflow用户
提问于 2013-05-08 04:55:09
回答 3查看 454关注 0票数 0

这是一种在javascript中自己指向对象而不修改ref对象的方法吗?

下面是我对这个问题的演示:

代码语言:javascript
复制
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
var  c= console.log ;
$(document).ready(function(e) {
    var _data   = $("#elem").data();
    var _xdata = _data ; // should be a miror object 
    console.log($("#elem").data() );
    _xdata.id = "changes applied back to #elem.data object !!!"  ;
    console.log($("#elem").data() );
    //any way to separate between $("#elem").data() and _xdata ??
}) ;
</script>
<div id="elem" data-id="1" data-foo="some data"></div> 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-08 05:08:19

这不是jQuery的问题,而是javascript的问题。当您将_xdata赋值给_data时,实际上是将引用的值赋值给_data对象(我知道这有点令人困惑)。如果你想创建一个“镜像对象”,你应该像这样克隆它:

代码语言:javascript
复制
var _xdata = jQuery.extend(true, {}, _data);

编辑:我在这里总是太慢了,但如果你想找一个浅层的副本,你可以试试:

代码语言:javascript
复制
var _xdata = jQuery.extend({}, _data);
票数 2
EN

Stack Overflow用户

发布于 2013-05-08 05:05:11

您可以使用jQuery的.clone()方法来克隆对象(以及它的数据),而不是像现在这样创建一个引用。

代码语言:javascript
复制
var _xdata = $("#elem").clone(true).data();

这样,您就可以在不影响原始数据的情况下操作克隆的数据。

票数 0
EN

Stack Overflow用户

发布于 2013-05-08 05:15:18

另一件事是,来自数据的值-无论在页面加载时存储在内部缓存中。因此,当您编写$("#something").data("whatever")时,它会返回页面加载时间的值,而不管数据是什么-无论在特定时刻以html编写的值是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16428385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档