Javascript 单击d3中自动触发的事件

Javascript 单击d3中自动触发的事件,javascript,d3.js,Javascript,D3.js,有人能向我解释一下为什么点击事件是在没有点击的情况下被触发的吗 var svgWindow = d3.select("body") .append("svg") .attr("width", widthWindow) .attr("height", heightWindow) .a

有人能向我解释一下为什么点击事件是在没有点击的情况下被触发的吗

     var svgWindow = d3.select("body")
                          .append("svg")
                          .attr("width", widthWindow)
                          .attr("height", heightWindow)
                          .attr("x", svgXWindow)
                          .attr("y", svgYWindow);

      var windowContainer=svgWindow.append("g").attr("id", "window_container");


      var userNodes=windowContainer.append("g")
                                    .attr("class", "userNode") 
                                    .attr("id","useriddata")
                                    .selectAll(".userNode")
                                    .on("click", alert('error'));
它需要位于函数{}中,以便仅在触发click事件时执行警报:

var userNodes=windowContainer.append("g")
                             .attr("class", "userNode") 
                             .attr("id","useriddata")
                             .selectAll(".userNode")
                             .on("click", function(){alert('error');});

否则,一旦调用userNodes,就会对警报进行评估,并调用警报,因此它甚至不会被单击就触发警报。一旦函数中有了它,一旦调用了ad,就会对函数进行评估,然后只在单击时执行。

是的,我意识到了这一点并解决了问题,回来回答我自己的问题,但发现您已经回答了。无论如何谢谢你!