【发布时间】:2015-05-19 15:55:57
【问题描述】:
我有一个带有 d3js 和 turbolinks(ajax 导航)的网络应用程序。
我的一些页面包含长时间的转换(超过 100 秒),因此当使用 AJAX 重新加载页面的一部分时,上一页的所有转换仍在运行。
如何完全从原始页面中删除所有过渡?
turbolinks 中有一个名为“page:before-unload”的事件,所以我打算用它来进行清理。
【问题讨论】:
-
您只需要在所有附加了过渡的元素上调用
.transition()。 -
感谢您的回复,但如果存在,我正在寻求通用解决方案。
-
不确定您所说的“通用解决方案”是什么意思——这适用于任何情况。
-
只有当我可以访问源代码并且我将所有转换的引用存储在某处时,它才会在所有情况下工作。我更喜欢一种可以在任何 d3js 页面(不仅是我的页面)上工作的解决方案,并且在 SVG/canvas/html 被销毁时清除所有转换。
-
哦,是的,你是对的——太明显了 :) 在这种情况下,问题是你在用于初始化转换的闭包中保留了对
rect的引用.因此,通过删除周围的元素,您并没有真正删除它,因为rect仍然存在于正在执行的函数中(正在运行的转换)。
标签: ajax d3.js transition turbolinks