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