之前已经处理过类似的问题,但我认为由于使用了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()。
答案 0 :(得分:2)
超时触发时this
将不符合您的预期。您可以创建一个这样的闭包:
$('.overlay').bind("mouseenter",function(){
$(this).fadeTo('slow', 0);
}).bind("mouseleave",function(){
var $this = $(this);
setTimeout(function() {
$this.fadeTo('slow', 1);
}, 2000);
});