2

嗨,伙计们,我有这个小 Jquery 脚本:链接文本

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

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

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

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

4

1 回答 1

11

好问题。

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

一个好的解决方案是使用 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 事件(即使您没有监听它们),但这些事件不会冒泡到它们的父元素。请参阅此页面以进行扩展讨论。

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

于 2008-11-21T13:16:18.480 回答