所以我试图找出为什么当我将一个值推送到父对象时,带有子对象的原因。
HTML:
<div id="parent" class="things" data-tallest="[]">
<div id="child1" class="things" data-tallest="[]">
I'm a child
</div>
<div id="child2" class="things" data-tallest="[]">
I'm another child
</div>
</div>
JS:
somearray = ["child1", "child2"]
$(".things").data("tallest",[])
for (var i = 0; i < somearray.length; i++) {
tocheck = somearray[i]
newarray = $("#"+tocheck).parent().data("tallest")
newarray.push(20);
$(tocheck).parent().data("tallest",newarray)
}
console.log("Child 1 'tallest': "+$("#child1").data("tallest"));
看到这个小提琴(在控制台日志中注明了问题):
我应该发生什么是迭代数组并两次将“20”推到父对象$("#parent")
的数据最高数组中。它应该导致[20,20]。相反,两个子对象都将值[20,20]推入其数组中。子对象永远不应该分配给它们。
编辑:澄清
任何猜测?
答案 0 :(得分:3)
您的数组只有一个项目,更改:
somearray = ["child1, child2"]
为:
var somearray = ["child1", "child2"];
答案 1 :(得分:0)
原来问题出在上面javascript的第1行。根据@ jfriend00和@charlietfl,我试图用以下方法清除存储的值:
$(".things").data("tallest",[])
在获取相同数组的所有.things对象中生成了结果,因此对其中的任何更改都会更改它们。
上查看更好的解释