添加< >标记在选择的enter()部分的主数据元素之前
Adding an <a> tag before the primary data element in the enter() section of a selection
使用d3.js,我正在使用使用enter(), exit()和默认更新选择的选择。
我选择的元素是路径元素。当我创建它们时,我想用标记包围它们。当我更新它们时,我只想更新其中的元素。
我正在尝试下面的操作,但是更新部分正在标签上执行。例:我以"display"结尾;"stroke"属性。
这个答案处理的是添加一个a标记,而不是更新混乱。
我该怎么做?
var preciseLinks = svg.selectAll("path.preciseLink")
.data(json, function(d) { return d["r1"]["title"] + "-" + d["r1"]["loc"] + "-" + d["r2"]["title"] + "-" + d["r2"]["loc"]; });
//enter
preciseLinks.enter()
.append("a").attr("href", function(d) { return "/" + replaceAll(d["r1"]["title"],"-","_") + "." + replaceAll(d["r1"]["loc"],":",".")})
.append("path")
.attr("class", function(d) { return "preciseLink " + d["r1"]["title"] + " " + d["r2"]["title"]; });
//update
preciseLinks
.attr("display", "inline")
.attr("stroke", function (d) { ...
您需要与您选择的基本元素保持一致。如果您希望每个数据点都有<a><path></path></a>
,那么您将希望使用<a>
作为选择的基础,并在更新中从那里向内选择。
var preciseLinks = svg.selectAll("a.preciseLinkA")
.data(json, function(d) { return d["r1"]["title"] + "-" + d["r1"]["loc"] + "-" + d["r2"]["title"] + "-" + d["r2"]["loc"]; });
//enter
preciseLinks.enter()
.append("a").attr("href", function(d) { return "/" + replaceAll(d["r1"]["title"],"-","_") + "." + replaceAll(d["r1"]["loc"],":",".")})
.classed("preciseLinkA", true)
.append("path")
.attr("class", function(d) { return "preciseLink " + d["r1"]["title"] + " " + d["r2"]["title"]; });
//update
preciseLinks
.select("path.preciseLink")
.attr("display", "inline")
.attr("stroke", function (d) { ...
相关文章:
- 基于数据元素限制动态表单字段
- 为什么DTM数据元素被调用两次
- 方法来使用jQuery选择匹配的数据元素
- 访问jQuery中的SVG数据元素
- Ajax 数据元素未拾取
- 从 json 字符串中提取数据元素
- Jquery验证插件,使用选项的数据元素作为验证检查
- 未捕获的异常:每个数据元素都必须实现一个唯一的“id”属性slick.dataview.js
- Knockout foreach 循环迭代相同的数据元素
- 从数据表重新加载 javascript 数据元素 asp.net 而不重新加载页面
- 如何从html中删除数据元素
- 使用jquery从HTML5数据元素中获取并执行函数+参数
- 按属性选择d3.js数据元素
- jQuery过滤器不返回数据元素,只返回整个对象
- 添加< >标记在选择的enter()部分的主数据元素之前
- 为数据元素设置一个变量
- 在javascript中转义数据元素中的撇号
- 如何访问CSV文件的数据元素
- 在adobedtm数据元素中寻找自定义脚本
- 问题更新Adobe分析变量通过数据元素在动态标签管理器- DTM