Просто сохраните объект эффекта где-нибудь (например, в замыкании) и отмените его, если вы хотите применить другой эффект
var element = $("element"),
currentEffect = null;
element.observe("mouseenter", function() {
if (currentEffect) {
currentEffect.cancel();
}
currentEffect = new Effect.Fade(element);
});
element.observe("mouseleave", function() {
if (currentEffect) {
currentEffect.cancel();
}
currentEffect = new Effect.Appear(element);
});
jsfiddle demo
(очевидно, вы можете выполнить рефакторинг несколькими способами, но в основном все, что вам нужно сделать, это наблюдать за событиями mouseenter
и mouseleave
, и не забудьте отменить любой запущенный эффект перед запуском нового)