这是一种在javascript中自己指向对象而不修改ref对象的方法吗?
下面是我对这个问题的演示:
<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> 发布于 2013-05-08 05:08:19
这不是jQuery的问题,而是javascript的问题。当您将_xdata赋值给_data时,实际上是将引用的值赋值给_data对象(我知道这有点令人困惑)。如果你想创建一个“镜像对象”,你应该像这样克隆它:
var _xdata = jQuery.extend(true, {}, _data);编辑:我在这里总是太慢了,但如果你想找一个浅层的副本,你可以试试:
var _xdata = jQuery.extend({}, _data);发布于 2013-05-08 05:05:11
您可以使用jQuery的.clone()方法来克隆对象(以及它的数据),而不是像现在这样创建一个引用。
var _xdata = $("#elem").clone(true).data();这样,您就可以在不影响原始数据的情况下操作克隆的数据。
发布于 2013-05-08 05:15:18
另一件事是,来自数据的值-无论在页面加载时存储在内部缓存中。因此,当您编写$("#something").data("whatever")时,它会返回页面加载时间的值,而不管数据是什么-无论在特定时刻以html编写的值是什么。
https://stackoverflow.com/questions/16428385
复制相似问题