0

我有一组分组的 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 相反的方法来重置我的过滤器。

http://jsfiddle.net/yPqqx/

4

1 回答 1

0

我刚刚尝试了一个关于你的问题的场景,看看

HTML

<span id="res">0</span>
<a href="javascript:void(0);" id="High">Link</a><br>
<a href="javascript:void(0);" id="Enable">Enable</a><br>
<a href="javascript:void(0);" id="Disable">Disable</a>

jQuery

function increase(){
    $("#res").text(parseInt($("#res").text()) + 1);
}
$("#High").on("click",increase);
//Enable
$(document).on("click","#Enable",function(){
    $("#High").on("click",increase);
});
//Disable
$(document).on("click","#Disable",function(){
    $("#High").off();
});

jsFiddle

于 2013-06-14T23:55:49.083 回答