jQuery 鼠标超时

发布于 2024-08-05 05:48:39 字数 516 浏览 10 评论 0原文

类似的问题以前已经处理过,但我相信由于使用了 bind() 函数,我的问题略有不同。无论如何...

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

我想淡出“mouseenter”上的覆盖,但只在“mouseleave”之后2000毫秒内淡出它。

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

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

Similar problems have been dealt with before but I believe mine's slightly different owing to the use of the bind() function. Anyhow...

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

I want to fade out the overlay on "mouseenter", but only fade it back in 2000ms after "mouseleave".

I have an additional question: When the .overlay div fades out, I need to be able to click on what's beneath it i.e. I need the div to disappear completely or move down the z-index stack. However, if I try adding this in, the script thinks the mouse has left the .overlay div, so the .overlay fades back in.

For the same reason I can't use fadeOut() and fadeIn().

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

国粹 2024-08-12 05:48:39

当超时触发时,this 将不会是您所期望的。您可以像这样创建一个闭包:

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

When the timeout fires this won't be what you expect. You can create a closure like this:

            $('.overlay').bind("mouseenter",function(){
                    $(this).fadeTo('slow', 0);
                    }).bind("mouseleave",function(){
                    var $this = $(this);                               
                    setTimeout(function() { 
                            $this.fadeTo('slow', 1);
                            }, 2000);
            });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文