将自定义 class 动态添加到 dc.selectMenu; IE11删除它

add custom class dynamically to dc.selectMenu; IE11 removes it

当动态添加自定义 css 类 到 dc.selectMenu 时,IE11 会在应用过滤器时将它们踢出。现在我使用 renderlet 再次将它们推入。由于添加了填充或 widths/heights.

,这会导致 "glitches"/移动内容

您可以通过 select 在我的 block 中的 select 框中选择一个选项来重现该问题。

这是一个错误吗?有谁知道不会导致这些故障出现的更清洁的解决方法?

我们发现 IE11 实际上 crashes on Win8 if you try to update a selectMenu! So we only render, don't attempt to redraw select该浏览器上的菜单。

这就是您需要重新申请的原因。

在试验中,我发现只需移动就足够了

.on('renderlet', ...

selectMenu,它可以说属于那里(因为它正在修改那个小部件)。我认为这是可行的,因为 select 菜单不使用任何转换,也没有延迟。

不过,更一般地说,在 dc.js 的任何现代版本中,您确实应该使用 pretransition 事件,该事件在任何转换之前触发。总而言之:

selectMenu.on('pretransition', function(chart){
    selectMenu.select('select').classed('uk-select', true);
});

虽然这是一个非常酷的词,但 renderlet 很少是适合收听的事件。您会在很多示例中看​​到它,因为它可以追溯到 dc.js 的早期版本,但它发生在所有转换完成之后。

如果您使用 pretransition,您将有机会在浏览器完全刷新之前更改内容。