Events Mootools:当其他事件发生时,如何停止事件

Events Mootools:当其他事件发生时,如何停止事件,events,mootools,mouseleave,mouseenter,Events,Mootools,Mouseleave,Mouseenter,我有一个关于mootools事件处理的问题 我想为下拉导航延迟鼠标事件。1秒后,drowdown列表将显示为“setStyle('display'、'block')……这是我到目前为止得到的,它正在工作: $('main-nav').getElements('li.level-1 ul.quick-nav').setStyle('display', 'none'); $('main-nav').getElements('li.level-

我有一个关于mootools事件处理的问题

我想为下拉导航延迟鼠标事件。1秒后,drowdown列表将显示为“setStyle('display'、'block')……这是我到目前为止得到的,它正在工作:

$('main-nav').getElements('li.level-1 ul.quick-nav').setStyle('display', 'none');

                            $('main-nav').getElements('li.level-1').each(function(elem){
                               var list = elem.getElement('.quick-nav');

                                elem.addEvents({
                                    'mouseenter' : function(event){                                                                                     
                                        (function() {
                                            elem.getElement('.quick-nav').setStyle('display', 'block');
                                        }).delay(1000)},
                                    'mouseleave' : function(event){                                               
                                            elem.getElement('.quick-nav').setStyle('display', 'none');
                                        }
                                });
                            });
我用延迟功能延迟了mouseenter事件…我遇到的问题仍然无法解决,当我已经离开导航项目时,mouseenter事件将发生。我输入项目,立即离开项目,一秒钟后子项目仍然出现。因此,我需要在mouseenter ev中进行某种检查ent,我的菜单项是否已显示。然后,如果菜单项仍然不可见,我可以停止mouseenter事件…我不知道如何通过MouseeSave事件的功能响应mousenter事件…希望任何人都理解这一点


提前感谢。

在mouseleave上使用计时器和
clearTimeout
(在旧版本的mootools中也是
$clear(timer)

$('main-nav').getElements('li.level-1 ul.quick-nav').setStyle('display', 'none');

$('main-nav').getElements('li.level-1').each(function(elem) {
    var list = elem.getElement('.quick-nav');
    var timer;
    elem.addEvents({
        'mouseenter': function(event) {
            timer = (function() {
                elem.getElement('.quick-nav').setStyle('display', 'block');
            }).delay(1000)
        },
        'mouseleave': function(event) {
            clearTimeout(timer);
            elem.getElement('.quick-nav').setStyle('display', 'none');
        }
    });
});