javascript - 如何在可折叠树的 d3.js 子级上添加点击事件?

标签 javascript jquery d3.js

我正在使用 d3.js 来实现 here 中的可折叠树结构
enter image description here 现在我的目标是在最后一个 child (即) Son of ADaughter of A
上添加点击事件 例如,我需要在单击无子节点时创建一个警报框。

我尝试在单击函数中添加一个条件,但它仅在第二次单击时有效,并且我不明白为什么警报框在第一次单击时没有启动。

有人可以解释一下为什么会这样吗?正确的方法是什么?

我的点击功能

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);
}

使用

if (!d.children){
    alert(d.id);
}

这是因为 d.children 将为 undefined,但您正在检查 null。由于 undefinednull 等于 false !d.children 检查将会成功。

关于javascript - 如何在可折叠树的 d3.js 子级上添加点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48503847/

相关文章:

jquery - Blueimp上传插件进度条错误

jquery - Bootstrap 3.0.0 模态事件未触发

ruby-on-rails - 如何正确安装 dc.js 以便与 Rails 5 一起使用?

javascript - 为什么浏览器在使用 createReadStream() Node.js 时一直加载

javascript - Vue.js "emit event"不要冒泡到父元素和祖父元素

javascript - 如何使用 moment.js/Javascript 列出 2 个时间戳之间的二月月份数?

javascript - AngularJS Controller 继承模式?

javascript - 如何将文本更改为文本输入元素 - jQuery

javascript - 未捕获( promise )DOMException : The element has no supported sources

javascript - 在 d3.js 中看不到圆圈