D3.js:连接选择?

Ric*_*ard 6 d3.js

D3中是否有一种方法可以连接选择?

使用案例:我想鼠标悬停事件添加到更新,并输入一个特定选择的选择.

我可以这样做:

var s = d3.selectAll('.yellow').data(myData);
s.on('mouseover'...
s.enter().append('path').attr('class','yellow').on('mouseover'... 
Run Code Online (Sandbox Code Playgroud)

但我更喜欢用一行代码来做.

Lar*_*off 7

在这种特殊情况下,您不需要连接 - 输入选择在调用后合并到更新选择中,因此您需要做的就是.enter()在更新选择之前处理.

一般来说,你不能真正地连接选择,但实际上这并不是必需的.您可以修改选择条件以选择所需的所有元素,或者,如果不可能,则使用.call()在所有选定元素上运行函数.这样您就不需要重复代码来设置属性等.

  • 如果d3中存在选择连接,那将非常有用.有时选择中涉及复杂的逻辑并将代码移动到函数中,并且在两个单独的位置调用的可读性低于(选择1 +选择2).doYourThings().. (5认同)