Javascript d3js中输入、更新和退出的数据键可以是列表吗?

Javascript d3js中输入、更新和退出的数据键可以是列表吗?,javascript,d3.js,Javascript,D3.js,我正试着用它来做这棵树 这个树中的键就是id,它只是一个整数 我想指定一个键,这样在节点id的同时,我还有一个额外的变量,这样当我切换该变量时,我的圆在更新部分被选中 我试着通过一个列表,比如 data(data, function () { return [(d.id || d.id = ++i), d.value]; }) 我希望在我将d.value更改为其他值时更新它。 到目前为止,我还没有找到它的任何运气,加上我似乎无法在文档中找到它。 有什么帮助吗?用于.data()的键是一

我正试着用它来做这棵树

这个树中的键就是id,它只是一个整数

我想指定一个键,这样在节点id的同时,我还有一个额外的变量,这样当我切换该变量时,我的圆在更新部分被选中

我试着通过一个列表,比如

data(data, function () {
   return [(d.id || d.id = ++i), d.value];
})
我希望在我将d.value更改为其他值时更新它。 到目前为止,我还没有找到它的任何运气,加上我似乎无法在文档中找到它。 有什么帮助吗?

用于
.data()
的键是一个函数。此函数告诉D3如何将第一个参数中的数据与绑定到现有元素的数据相匹配。也就是说,如果key函数为
.data()
的第一个参数中的元素返回相同的值,并且该数据绑定到现有DOM元素,则假定DOM元素表示该数据

如果数据元素匹配,它将在更新选择中。如果不匹配,它将出现在输入选择中。所有与数据不匹配的现有DOM元素都将在退出选择中


因此,在您的情况下,实际上不需要更改任何内容,因为节点将是更新选择的一部分。

啊,好的。我把它记录下来,看到它确实出现在更新部分。我认为问题在于,我将节点数据的副本保存在其他标记的数据字段中的某个位置,并进行更新,这不会影响我的原始数据。我原本以为它是一个引用,但我认为当我执行
$(tag).data(data)
时,jquery会复制它。我可以问你是否知道我如何在那里传递引用吗?我不确定你所说的引用是什么意思,JQuery也不会复制这样的引用。您的意思是将数据绑定到不同的DOM元素,然后更新DOM元素的子集吗?是的,我有一个json,用于生成树。然后,我使用data属性将特定节点的数据保存在html标记中。然后我更改html标记中的数据(而不是json)。我希望这出现在更新选择中,如果它是由设计引起的,或者我做错了什么?我不知道“将特定节点的数据保存在HTML标记中”是什么意思,也不知道您将如何更改它。你能发布你的代码吗?通过保存数据,我的意思是,我在上添加了一个事件侦听器。(“mouseover”,function(d){$(“#someid.data(d);})。然后单击#someid I do,
var data=$(“#someid”).data();data.value=null;
。现在我希望这个更改反映在我的更新部分中,这是不会发生的