使下拉菜单在悬停时显示,并显示超时
Make dropdown menu appear on hover with a timeout
我最近做了这个简单的导航,你有几个带有下拉列表的链接。首先它只在 CSS3 中,但后来我决定添加一些 jQuery 以使下拉列表在一定时间后出现。(大多数jQuery代码是基于另一个线程中给出的答案)
基本上,我的问题是我无法定位悬停的正确元素,因此当我悬停在 li 元素上时,我的所有下拉列表都会显示出来。我尝试尽可能多地调整它,但我找不到正确的代码段。
任何回复将不胜感激!
我的菜单如下所示:
<ul id="generale">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li>
<a href="#">Item 3</a>
<ul>
<li><a href="#">Subitem 1</a></li>
<li><a href="#">Subitem 2</a></li>
<li><a href="#">Subitem 3</a></li>
<li><a href="#">Subitem 4</a></li>
<li><a href="#">Subitem 5</a></li>
</ul>
</li>
<li>
<a href="#">Item 4</a>
<ul>
<li><a href="#">Subitem 1</a></li>
<li><a href="#">Subitem 2</a></li>
<li><a href="#">Subitem 3</a></li>
<li><a href="#">Subitem 4</a></li>
<li><a href="#">Subitem 5</a></li>
</ul>
</li>
<li><a href="#">Item 5</a></li>
<li><a href="#">Item 6</a></li>
</ul>
和我的jQuery:
var navTimers = [];
$( "#generale > li" ).hover(
function () {
var id = jQuery.data( this );
var $this = $( this );
navTimers[id] = setTimeout( function() {
$('#generale ul').fadeIn(200);
navTimers[id] = "";
}, 300 );
},
function () {
var id = jQuery.data( this );
if ( navTimers[id] != "" ) {
clearTimeout( navTimers[id] );
} else {
$('#generale ul').fadeOut(200);
}
}
);
淡入和淡出函数当前面向#generale
元素中的所有ul
。
尝试更改
$('#generale ul').fadeIn(200);
自
$this.find('ul').fadeIn(200);
和
$('#generale ul').fadeOut(200);
自
$this.find('ul').fadeOut(200); // you'll also have to define $this = $(this)
相关文章:
- 使下拉菜单在悬停时显示,并显示超时
- 是否有JQuery或Javascript警告消息实用程序,可以在不干扰用户的情况下显示和超时
- 如何在角度 js $http调用中显示超时错误
- jquery显示超时倒计时输出
- jquery模式在超时后自动显示
- 项目不't在超时时填充ng repeat时显示
- 多个JavaScript超时弹出窗口,只有在上一个弹出窗口关闭时才会显示
- 打开外部链接时显示超时警告
- 添加超时函数来显示cookie的模态
- Js超时显示
- setTimeout设置Bootstrap模式超时后不显示
- 鼠标悬停转换为超时显示或双击
- 为脚本设置超时,并在到期时显示弹出
- 在超时期间显示加载程序?反应
- 我可以用CSS3和/或javascript隐藏/显示此菜单而不超时吗
- 在 0.08 秒超时内显示不同的图片
- 显示通知直到超时除非悬停(jQuery)
- 幻灯片显示第一张幻灯片超时变长
- Javascript导航,悬停显示,取消悬停隐藏与超时,如何
- 显示隐藏的HTML元素,点击超时