正确的方法来判断我的选择是否捕获了任何现有元素

Mik*_*war 45 javascript d3.js

我在d3中进行切换,并试图避免全局变量.

我可以继续选择项目,就好像它已经在场景中一样:

d3.select('#awesome_line_graph')
Run Code Online (Sandbox Code Playgroud)

然后测试看我是否抓到任何东西

if (d3.select('#awesome_line_graph')[0].every(function(d){return d===null})){
    // draw awesome line graph
} else {
    d3.select('#awesome_line_graph').remove()
}
Run Code Online (Sandbox Code Playgroud)

但是对于第0个元素的测试可能不止一个空的东西看起来很可怕和hacky.我应该怎么做呢?不知道多少javascript的道歉.

mbo*_*ock 83

使用selection.empty().此外,如果选择为空,则无需将其删除.

  • 其实它应该是`selection.empty()`,它是一个函数调用不是吗? (7认同)