如何正确删除动画集中引用的Raphael SVG元素?

Jus*_*tin 4 javascript animation callback set raphael

我有一套动画拉斐尔SVG元素.我正在添加新元素并使用用户启动的ajax调用删除旧元素.我set.push()新元素,但因为我需要删除的元素通常不是集合中的最后一个元素,我使用的是element.remove()而不是set.pop().这会在集合中留下一个已删除的元素,当我调用set.animate()时,会导致不调用动画回调方法.也许这是Raphael 1.5.2中的一个错误.

jsFiddle示例:http://jsfiddle.net/G7fAQ/

有没有更好的方法来删除动画集中引用的元素?或者我只需要在调用element.remove()时手动管理set.items数组,set.length变量和设置元素?

http://jsfiddle.net/G7fAQ/1/

谢谢

chr*_*rsh 5

要从数组中删除元素(set毕竟这是拉斐尔的元素),您可以使用该splice函数.

如果你知道数组中元素的索引,那么就像这样简单:

set.items.splice(index);
Run Code Online (Sandbox Code Playgroud)

这将从数组中删除索引元素.splice返回已删除的元素,因此如果您需要remove()它或在屏幕上设置动画,您可以.

编辑:splice接受两个参数,要删除的数组中的索引,以及要删除的元素数量(以及要添加到数组的成员的任意数量的附加参数,这里不需要).

代码应为:

set.items.splice(index, 1);
Run Code Online (Sandbox Code Playgroud)