在jQuery中显示/隐藏菜单问题

时间:2010-04-11 16:30:33

标签: jquery css

我遇到了一个使用jQuery显示/隐藏菜单的奇怪行为。

我有一个绝对定位的div,其中包含一个“激活器”div(相对定位),我想在moseover上显示一个菜单。菜单div包含在激活器div中,也是相对定位的。我正在假设,因为它会被激活器包含,当鼠标移动到显示的菜单时,不会触发滚降。当您滚动到显示的菜单上时,显示/隐藏开始发出脉冲,即使在鼠标清除区域后也会显示一秒左右。

CSS看起来像这样

#myAbsolutePos {
 position:absolute;
 height:335px;
 width:213px;
 top:508px;
 left:0;
 z-index:2;
}

#activator {
 position:relative;
 height:35px;
 margin-top:95px;
 text-align:center;
 width:inherit;
 cursor:pointer;
}

#menu {
 position:relative;
 height:255px;
 width:243px;
 top:-45px;
 left:190px;
 padding:20px 25px 20px 25px;
}

#menuContents {
 width:190px;
}

jQuery funcs:

  $('#activator').mouseover(function () {
    $('#menu').show('slow');     
  });

  $('#activator').mouseout(function () {
    $('#menu').hide('slow'); 
  });

HTML:

<div id="myAbsolutePos">
<div id="activator">
  // content

  <div id="menu" style="display:none">
    <div id="menuContents">
    // content
    </div>
  </div>
</div>
</div>

要查看行动中的问题,请点击左下角的当前天气位置(雷霆马):http://www.karlsenner.dreamhosters.com/index.php

非常感谢任何建议!

2 个答案:

答案 0 :(得分:2)

你可以尝试:

$('#activator').hover(function () {
    $('#menu').show('slow');     
}, function () {
    $('#menu').hide('slow'); 
});

答案 1 :(得分:0)

我从未有过调整节目/隐藏时间的最好运气。代码工作得很好:

$('#weatherSelected').mouseover(function(){
  $('#weatherMenu').show();
}).mouseout(function(){
  $('#weatherMenu').hide();
});

我建议的另一件事是不要直接从他们的托管网站链接到脚本。它让网络主人因为窃取带宽而对你很生气。因此,在您的网站上托管jquery循环插件,但使用google的副本(因为他们允许)jquery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>