我有一组分组的 svg 形状,它们有一个类和单独的 id。我在这些形状上实现了一个 onclick 函数,该函数又运行另一个函数(过滤器),它过滤掉我画布中的数组。我还可以双击以恢复过滤器数组。
但是,当我单击其中一个形状时,我希望禁用其他形状,直到我双击刚刚单击的形状。我已经看到了很多例子,但似乎没有用我到目前为止的工作:
function filter (d) {
if (d.s =='triangle')
{d3.selectAll(".nodes").filter(function(d) {return d.categ === 'High' || d.categ === 'Low'}).transition().style("opacity", 0).style("display", "none");
d3.selectAll("#High").on('click',function() { d3.event.stopPropagation(); } ); }
else if (d.s =='cross')
{return d3.selectAll(".nodes").filter(function(d) {return d.categ === 'Medium' || d.categ === 'Low'}).transition().style("opacity", 0).style("display", "none");}
else {return d3.selectAll(".nodes").filter(function(d) {return d.categ === 'Medium' || d.categ === 'High'}).transition().style("opacity", 0).style("display", "none");}
}
function antifilter (d) {
d3.selectAll(".nodes").transition().style("opacity", 1).style("display", "block")
}
我也尝试过使用
.on('click',null)
和
document.getElementById("High").onclick = function() { return false; }
但没有运气。任何帮助都会很棒!那么有没有办法在我双击时再次开始鼠标单击。找不到与 stopPropagation 相反的方法来重置我的过滤器。