我为什么在加载时获得点击,但是在点击时却没有?

时间:2014-06-18 22:20:15

标签: javascript d3.js onclick

我被我的JavaScript / d3代码所带来的奇怪行为所困扰。我have elements我已经指定onclick处理程序将d3与.on("click", ...一起使用,但这些元素的行为就像它们仅在我的页面加载时被点击一样,而不是在我点击它们时

我怀疑我做了一些根本错误的事情,但无法弄清楚它是什么。如何在点击时运行onclick处理程序,而不是在我的页面加载时运行?

2 个答案:

答案 0 :(得分:2)

在不了解D3的情况下,我猜测它是因为你正在做这个

d3.select("#distancefig").on("click", updatePlot('distancefig', false));

而不是这个

d3.select("#distancefig").on("click", function() {
  updatePlot('distancefig', false)
});

当您打算提供调用时,您正在进行函数调用。

答案 1 :(得分:1)

因为你没有将这些函数绑定为事件处理程序,所以你调用这些函数并将它们的返回值用作事件处理程序。

您可以使用函数表达式创建可以绑定为事件处理程序的函数引用。在函数表达式中,您可以使用现在的函数调用:

d3.select("#distancefig").on("click", function(){
  d3.event.preventDefault();
  updatePlot('distancefig', false));
});
d3.select("#speedfig").on("click", function(){
  d3.event.preventDefault();
  updatePlot('speedfig', false));
}),