如何在另一个完成之后触发原型事件?

时间:2012-07-20 17:08:47

标签: javascript prototypejs scriptaculous

例如,执行此操作:

new Effect.Move('agrupador', { x: -100, y: 0, mode: 'relative' });
Element.setStyle('agrupador', {left: '0px' });

在元素向左移动之前应用左侧位置,但我想要相反。

有没有办法做到这一点?

PD:我保证会烧制原型。

1 个答案:

答案 0 :(得分:2)

这是一个小提琴:

http://jsfiddle.net/uF9Dh/

new Effect.Move('agrupador', {
    x: -100,
    y: 0,
    mode: 'relative',
    afterFinish: function() {
        Element.setStyle('agrupador', {left: '0px' });
    }
});
​

移动效果是异步的。当你致电new Effect.Move()时,你会在一秒钟内设置一些事情。在您发布的代码中,您在实例化效果后将left属性设置为0px不是在效果完成后。为此目的有一个afterFinish回调。您可以查看Scriptaculous effects here的其他可用回调。

顺便说一句 - 这个问题不是Prototype或Scriptaculous特有的,而是Javascript中异步操作的工作方式。