Javascript .attr与D3.js中的分类
在d3中,什么时候使用合适Javascript .attr与D3.js中的分类,javascript,d3.js,Javascript,D3.js,在d3中,什么时候使用合适 d3.select("foo").attr('class', 'bar'); 相对于 d3.select("foo").classed('bar', true); ? 是推荐还是预期不推荐使用?什么是行业标准?我认为分类是一种条件检查,例如: 要添加类,classed的第二个参数必须为true,如下代码所示: d3.selectAll(".bar") .classed("my-selector", true); 若要
d3.select("foo").attr('class', 'bar');
相对于
d3.select("foo").classed('bar', true);
?
是推荐还是预期不推荐使用?什么是行业标准?我认为
分类
是一种条件检查,例如:
要添加类,classed的第二个参数必须为true,如下代码所示:
d3.selectAll(".bar")
.classed("my-selector", true);
若要删除类,要分类的第二个参数必须为false
d3.selectAll(".bar")
.classed("my-selector", false);
要将类翻转到相反的状态—如果它已经存在,则将其删除;如果它还不存在,则将其添加—可以执行以下操作之一
对于单个元素,代码可能如下所示:
var oneBar = d3.select(".bar")
oneBar.classed("my-selector", !oneBar.classed("my-selector"));
classed和attr具有同等的重要性,attr
具有classed
无法用于的其他用途。
没有合适的方法、建议或标准。这两种方法都是有效的,决定使用哪种方法取决于您的特定目的
classed(“foo”,true)
和attr(“class”,“foo”)
之间的主要区别在于前者只会在类列表已经存在时修改它
如果指定了值,则通过设置class属性或修改classList属性来指定或取消指定选定元素上的指定CSS类名,并返回此选择。(强调矿山)
。。。而后者将覆盖它
让我们在一个非常简单的演示中展示差异
DOM中已存在具有指定类的段落。我们选择它们并在选择中使用attr(“class”,“someClass”)
。然后,我们console.log
var p=d3。选择全部(“p”);
p、 属性(“类”、“某类”);
p、 每个(函数(){
console.log(d3.select(this.attr(“类”))
})
此段落有一个foo类
此段落有一个类baz