单击时禁用/启用按钮

时间:2013-06-14 23:27:39

标签: javascript jquery d3.js

我有一个分组的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)

AND

      document.getElementById("High").onclick = function() { return false; }

但没有运气。任何帮助都会很棒!当我双击时,有没有办法再次启动鼠标点击。找不到stopPropagation来重置我的过滤器。

http://jsfiddle.net/yPqqx/

1 个答案:

答案 0 :(得分: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