我正在尝试创建一个Javascript应用程序,当鼠标触摸它时,元素将慢慢淡出,当鼠标离开元素时,元素将淡入淡出。我正在使用带有Scriptaculous的Prototype,那么是否有一个Prototype函数可以告诉我鼠标是否在任何给定时间触摸对象?
使用Scriptaculous FadeOut / FadeIn效果的主要问题是,当一个人在另一个人完成之前被触发时,效果会发生冲突并且元素行为不正常。
答案 0 :(得分:2)
只需将效果对象存储在某处(例如在闭包中),并在想要应用其他效果时取消它
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);
});
(显然你可以用几种方式重构它,但基本上你需要做的就是观察mouseenter
和mouseleave
事件,并记住在开始新的事件之前取消任何运行效果)< / p>