0

我觉得这个问题之前一定有人问过,但我一定不知道正确的术语才能找到答案。

我有一个transparent作为命中区域的 div。当用户将鼠标悬停在该区域上时,菜单栏会在屏幕上显示动画。问题是如果光标移到这个菜单上,隐藏菜单的动画就会开始。它感觉不到光标在它上面。我可以通过使点击区域的 z-index 高于菜单来解决这个问题,但是菜单按钮是不可点击的。

这是我的代码。有任何想法吗?

http://jsfiddle.net/92dYt/1/

CSS

#menu{
  position:fixed;
  top:-40px;
  left:0px;
  width:100%;
  height:40px;
  background-color:#000;
  z-index:50;
}​
#hitarea{
  position:fixed;
  top:0px;
  left:0px;
  width:100%;
  height:150px;
  background-color:#eee;
  z-index:49;
  opacity:0;
}

HTML

<div id="menu"></div>
<div id="hitarea"></div>

JAVASCRIPT

$("#hitarea").hover(
    function () {
        $('#menu').delay(500).animate({
            top: 0
          }, 500, function() {
            // Animation complete.

        }); 
    }, 
  function () {
    $('#menu').delay(500).animate({
        top: -40
      }, 500, function() {
        // Animation complete.

    }); 
  }
);
4

1 回答 1

1

您可能希望将点击区域作为背景嵌套在菜单中,并使用 mouseenter 而不是 hover 来编写您自己的悬停行为。

http://api.jquery.com/mouseenter/

您可以从示例中看到 mouseover 会为每个子对象触发,而 mouseenter 只会触发一次。(尽管如果嵌套,该解决方案也可能适用于悬停。)

于 2012-06-10T07:01:25.437 回答