Javascript 如何使多个d3窗口调整大小事件

Javascript 如何使多个d3窗口调整大小事件,javascript,svg,d3.js,responsive-design,resize,Javascript,Svg,D3.js,Responsive Design,Resize,我在一个页面上有三个svg元素,每个元素都由D3陪同。每个页面都有自己的页面大小调整逻辑,由一个用户指定,以使其响应 问题是只有最后一个调整大小事件触发,因为它似乎覆盖了先前的页面调整大小事件。这是否是d3.select(window.on('resize',…)的预期行为?我习惯于$(窗口)。调整(…),这在多次调用时效果很好 我看到有人建议在D3中可能出现多个调整大小事件。我在做傻事吗 下面是一个简单的示例I: 哪些产出: d3 resize event B! d3 resize event

我在一个页面上有三个
svg
元素,每个元素都由D3陪同。每个页面都有自己的页面大小调整逻辑,由一个用户指定,以使其响应

问题是只有最后一个调整大小事件触发,因为它似乎覆盖了先前的页面调整大小事件。这是否是d3.select(window.on('resize',…)的预期行为?我习惯于
$(窗口)。调整(…)
,这在多次调用时效果很好

我看到有人建议在D3中可能出现多个调整大小事件。我在做傻事吗

下面是一个简单的示例I:

哪些产出:

d3 resize event B!
d3 resize event B!
jQ resize event A!
jQ resize event B!
jQ resize event A!
jQ resize event B!

我知道可以继续将以前的调整大小功能分流到一个链中。只是预期与D3不同的行为。

您需要为侦听器命名名称空间,例如('resize.one')上的
和('resize.two')上的

从:

如果已在所选元素上为相同类型注册了事件侦听器,则在添加新侦听器之前将删除现有侦听器。要为同一事件类型注册多个侦听器,该类型后面可以跟一个可选的命名空间,例如“click.foo”和“click.bar”


最好使用like,使每个模块都能够设置/删除其自己的调整大小观察者。

for v4.0已移动。这个答案对v4仍然有效。
d3 resize event B!
d3 resize event B!
jQ resize event A!
jQ resize event B!
jQ resize event A!
jQ resize event B!