JQuery mouseout超时

时间:2009-09-17 17:43:35

标签: jquery mouse effects fade mouseenter

之前已经处理过类似的问题,但我认为由于使用了bind()函数,我的情况略有不同。总之...

$('.overlay').bind("mouseenter",function(){
  $(this).fadeTo('slow', 0);
}).bind("mouseleave",function(){                
  setTimeout(function() { 
    $(this).fadeTo('slow', 1);
  }, 2000);
});

我希望淡出“mouseenter”上的叠加层,但只能在“mouseleave”之后的2000ms内淡化它。

我还有一个问题:当.overlay div淡出时,我需要能够点击它下面的内容,即我需要div完全消失或向下移动z-index堆栈。但是,如果我尝试添加它,脚本会认为鼠标已经离开了.overlay div,因此.overlay会重新进入。

出于同样的原因,我不能使用fadeOut()和fadeIn()。

1 个答案:

答案 0 :(得分:2)

超时触发时this将不符合您的预期。您可以创建一个这样的闭包:

            $('.overlay').bind("mouseenter",function(){
                    $(this).fadeTo('slow', 0);
                    }).bind("mouseleave",function(){
                    var $this = $(this);                               
                    setTimeout(function() { 
                            $this.fadeTo('slow', 1);
                            }, 2000);
            });