【问题标题】:Jquery - How do I fix this Image Rollover?Jquery - 如何修复此图像翻转?
【发布时间】:2008-11-21 10:51:08
【问题描述】:

大家好,我有这个 Jquery 小脚本:link text

$(document).ready(function() 
{
      $('#image p').hide();

      $('img').hover(function()
      {
            $('#image p').show(200); 
      }, function()
      {
            $('#image p').hide(200); 
      });
}); 

我工作正常,但我希望能够将鼠标悬停在位于图像中的文本上,每次尝试时,它都会一直“弹跳”

非常感谢任何帮助, 谢谢, 基思

【问题讨论】:

    标签: jquery hover rollover


    【解决方案1】:

    好问题。

    问题似乎是当鼠标悬停在段落上时,鼠标不再悬停在图像上。所以段落被隐藏了。当段落被隐藏时,鼠标再次悬停在图像上,因此段落再次显示。等等……

    一个好的解决方案是使用 mouseenter 和 mouseleave 事件而不是 mouseover 和 mouseout:

    $(document).ready(function(){
        $('#image p').hide();
    
        $('#image').bind("mouseenter", (function(){
            $('#image p').show(200)
         }));
    
        $('#image').bind("mouseleave", (function(){
            $('#image p').hide(200)
         }));
    
    });
    

    mouseenter/mouseleave 事件和 mouseover/mouseout 事件的主要区别在于前者不会冒泡。

    在此示例中, div#image 的子段落仍会收到 mouseenter/mouseleave 事件(即使您没有监听它们),但这些事件不会冒泡到它们的父元素。请参阅this page 对此的扩展讨论。

    您还必须不再将事件分配给 img 标签,而是分配给包含的 div。这应该不是问题。

    【讨论】:

    • 这个想法很好,但提供的代码不起作用。最后一个事件处理程序必须像这样指定: $('#image p').mouseover(function () { $(this).show() }
    • 你是对的。这是一个剪切和粘贴错误。无论如何,最后一个事件是不必要的。
    • @Marko Dumic - 这是有道理的,如果有 2 个段落,它们都会出现。 $(this).show() 更好,谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多