将参数传递给d3"点击"事件回调

时间:2014-08-01 21:57:38

标签: javascript d3.js

这是我的代码:

function toggleClass(element, className){
  d3.select(element).classed(className, !d3.select(element).classed(className));
}

d3.selectAll("rect").on("click", toggleClass(this, "clicked");

我无法让它工作,似乎将参数传递给DOM事件是坏消息。有没有人知道这方面的解决方法?

谢谢

2 个答案:

答案 0 :(得分:9)

这有效:

function toggleClass(element, className){
  d3.select(element).classed(className, !d3.select(element).classed(className));
}

d3.selectAll("rect").on("click", function () {
  toggleClass(this, "clicked");
});

这是工作小提琴:http://jsfiddle.net/g45Ju/

感谢jshanley

答案 1 :(得分:0)

您是否尝试过selection.datum()功能?这段代码可能会给你一个想法:

d3
 .select('svg')
 .append('circle')
 .datum({
    'x':10,
    'y':100,
    'z':100
  })
 .on('click'),function(d){
     //Here d = {'x':10,'y':100,'z':1000}
  });