使用Prototype.js检测鼠标是否正在触摸元素?

时间:2012-01-30 01:14:06

标签: javascript prototypejs scriptaculous

我正在尝试创建一个Javascript应用程序,当鼠标触摸它时,元素将慢慢淡出,当鼠标离开元素时,元素将淡入淡出。我正在使用带有Scriptaculous的Prototype,那么是否有一个Prototype函数可以告诉我鼠标是否在任何给定时间触摸对象?

使用Scriptaculous FadeOut / FadeIn效果的主要问题是,当一个人在另一个人完成之前被触发时,效果会发生冲突并且元素行为不正常。

1 个答案:

答案 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);
});

jsfiddle demo

(显然你可以用几种方式重构它,但基本上你需要做的就是观察mouseentermouseleave事件,并记住在开始新的事件之前取消任何运行效果)< / p>