我有两个数组对象来保存我的 d3.svg.symbol 类型,它们是圆形、正方形和三角形。数组 #1 有多个符号,我在画布上绘制,而数组 #2 仅将三个符号对齐在一起。
我的目标是能够单击数组 #2 以过滤掉我不想看到的所有数组 #1 符号。例如,单击阵列#2 中的一个圆圈仅意味着圆圈显示在阵列#1 中。
var array1 = svg.selectAll(a.array1)
.data(json).enter().append("a")
array1.transition().duration(1000)
.attr("transform", function(d,i) {return "translate("+d.x+","+d.y+")" ;})
array1.append('path')
.attr("d", d3.svg.symbol().type(function(d) {return shape [d.Country];}).size(120))
var array2 = svg.selectAll(g.array2)
.data(filt)
.enter().append("g")
.attr("transform", function(d,i) {return "translate("+d.x+","+d.y+")" ;})
array2.append("path")
.attr("d", d3.svg.symbol().type(function(d){return d.shape;}).size(200))
.attr("transform", "translate(-10, -5)")
所以我的查询是如何指定对array#2 特定类型的点击,因为我有三个。因此,我希望所有人都可以点击,但结果不同。
到目前为止,我已经尝试过这个只是为了尝试并在数组#2 中选择特定的形状
array2.on("click", function(){ alert('success') })
当我单击其中任何一个时,它只会发出警报,但是当它被应用时:
array2.on("click", function(){ if (d3.svg.symbol().type('circle') === true) { return alert('success') ;}; })
当我单击array2 的圆圈时,它根本不会发出警报。
如果我能得到一些帮助,那就太好了——谢谢。http://jsfiddle.net/Zc4z9/16/