Javascript 如何在可折叠树的d3.js子级上添加click事件?

Javascript 如何在可折叠树的d3.js子级上添加click事件?,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我将d3.js用于 现在,我的目标是在最后一个孩子(即一个的儿子或一个的女儿)上添加一个点击事件 例如,我需要在单击无子女节点时创建一个警报框。 我试图在单击功能中添加一个条件,但它只在我第二次单击时起作用,我不明白为什么在我第一次单击时警报框没有启动。 谁能解释一下为什么会这样?正确的方法是什么 我的点击功能 function click(d) { if (d.children) { d._children = d.children; d.children = null;

我将d3.js用于
现在,我的目标是在最后一个孩子(即一个的儿子或一个的女儿)上添加一个点击事件 例如,我需要在单击无子女节点时创建一个警报框。

我试图在单击功能中添加一个条件,但它只在我第二次单击时起作用,我不明白为什么在我第一次单击时警报框没有启动。

谁能解释一下为什么会这样?正确的方法是什么

我的点击功能

function click(d) {
if (d.children) {
    d._children = d.children;
    d.children = null;

  } else {
    d.children = d._children;
    d._children = null;
    if (d.children === null){
        alert(d.id);
    }
  }
update(d);
}
而不是使用

if (d.children === null){
    alert(d.id);
}
使用


这是因为
d.children
将是
未定义的
,但您正在检查
null
。因为
未定义
等同于
!d、 孩子们
检查会成功。

哦,谢谢,我现在拿到了:-)它像我预期的那样完美地工作。。。顺便问一下,为什么我第二次点击它就成功了?你能解释一下吗?就像我前面提到的,第一次
d.\u children
的值是
undefined
,它被设置为d.children。所以d.children(未定义)不是null。在此之后,执行
d._children=null
,并将其设置为
null
。第二次单击时,
d.\u children
为空,并设置为d.children。所以第二次,
d.children===null
的计算结果为true。因此,这是一种行为。
if (!d.children){
    alert(d.id);
}