【问题标题】:how to prevent mouseover effect not disppearing after mouseleave如何防止鼠标离开后鼠标悬停效果不消失
【发布时间】:2011-07-30 09:06:00
【问题描述】:

我正在尝试做鼠标悬停并显示拇指效果,这是示例代码:

<ul>
   <li><a href="">testing</a></li>
   <li><a href="">testing</a></li>
   <li><a href="">testing</a></li>
   <li><a href="">testing</a></li>
   <li><a href="">testing</a></li>
   <li><a href="">testing</a></li> 
   <img class="img" src="http://jsfiddle.net/img/logo.png" style="display:none">
</ul>

js脚本:

$('li').hover(
  function(e){
    $('.img').css({
        'position':'absolute',
        'left': e.pageX,
        'top': e.pageY
    }).fadeIn();
},
  function(e){
    $('.img').hide();
});

演示可以在这里查看:http://jsfiddle.net/8zG2Q/2/,

问题是当鼠标快速移到项目上时,鼠标离开所有项目后图像并没有隐藏。我尝试使用 show() 而不是 fadeIn(),但这无济于事,因为我从服务器加载图像,需要时间才能看到。

那么,当鼠标不在所有项目中时,隐藏图像的好方法是什么?感谢您的帮助。

【问题讨论】:

  • 对我来说效果很好(即,如果我将鼠标悬停在图像上,无论我将鼠标悬停多快,图像都会消失)
  • 原来是用show(),再试试看演示。
  • 你可以尝试使用 .animate() 来实现,见stackoverflow.com/questions/2805906/jquery-stop-fadein-fadeout
  • @andreas,谢谢,让我试试。
  • 这似乎没有帮助。感谢任何方式

标签: jquery image hover


【解决方案1】:

在调用fadeIn() 之前,停止动画(可选地清除队列并跳转到动画的末尾)然后隐藏元素(重置为“基本状态”),如下所示:

$('li').hover(
  function(e){
    $('.img').css({
        'position':'absolute',
        'left': e.pageX,
        'top': e.pageY
    }).stop(true,true).hide().fadeIn();
},
  function(e){
    $('.img').hide();
});

【讨论】:

  • 嗨,cheeken,谢谢你的回答,这在我的情况下不起作用,当鼠标快速悬停时图像仍然挂在那里。
  • 哦,我看到它适用于我在此处发布的示例,您应该为此获得一些荣誉,但我的案例是从服务器加载图像,所以它不能以这种方式工作。但这是一个很好的灵感。
  • 我无法重现该问题。你用的是什么浏览器?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
相关资源
最近更新 更多