如何显示只有第一个通过jQuery悬停
How to show only the first by hover with jQuery?
如果我把鼠标悬停在我的菜单链接上,目前所有在第一层的子菜单都会显示出来我不知道哪里不对,看看我的代码:
$('#menu li').hover(function () {
//show its submenu
$('ul', this).slideDown(100);
}, function () {
//hide its submenu
$('ul', this).slideUp(100);
});
所以在我看来,它必须工作得很好,因为悬停在一个链接应该只显示这个第一个子菜单。但也这第一个链接的子菜单将直接显示悬停,我不知道如何修复它比现在更好。
我需要一些帮助。
为了更好的理解,我在这里创建了一个fiddle
你的选择器在你的悬停函数是找到所有的ul
元素是li
元素的后代。你只想显示直系子女。试试这个:
$('#menu li').hover(function() {
//show its submenu
$(this).children('ul').slideDown(100);
}, function() {
//hide its submenu
$(this).children('ul').slideUp(100);
});
保存子菜单的<ul>
也包含子菜单。因此,如果您显示第一个列表,它也会自动显示该列表中包含的所有元素。
您应该为不同级别的子菜单使用不同的类来分离ul
。
如果你只是想改变你的代码,你可能想试试这个改变:
//show its submenu
$('ul', this).eq(0).slideDown(100);
您需要指定要显示的列表。使用$(this)
作为上下文来查找里面的<ul>
,然后使用:first
伪选择器过滤结果。
为hoverIn
和hoverOut
事件尝试这样做:
$("#menu").on('hover', 'li', function(e){
// $(this) refers to the <li> being hovered
$(this).find('ul:first').slideToggle(100);
});
参见on()
和slideToggle()
方法的文档
相关文章:
- 使用jquery选择元素附近的第一个h2
- 在jQuery中,如何测试一个元素是否是同一类的多个元素中的第一个
- 在jquery中使用.split并从数组中提取第一个项
- 第一个jquery事件正在发生,但没有发生第二个事件
- 第一个jQuery.animate()不工作
- 第一个jquery项目-在函数中使用处理程序来模块化它们
- jquery-select2显示默认选择的第一个值
- 第二个 Jquery json 在第一个 Jquery 完成之前被解雇
- 为什么我添加的第二个jQuery代码部分/新的CSS部分导致第一个jQuery代码在我的页面上不起作用
- 第一个jQuery插件-如何以正确的方式保存关联元素数据
- 第一个jQuery插件 - 如何处理重新初始化时的事件
- 第一个JQuery项目..有点卡住了
- 编写第一个jQuery插件
- 第一个jquery插件
- 在获得我的第一个jquery小部件时遇到了麻烦
- 请帮助我了解如何使我的第一个jquery滑块
- 我的第一个jquery ajax页面(初学者)
- 如何获得第一个jQuery对象的父对象
- 第一个jQuery插件,我在正确的轨道上
- 我的第一个Jquery代码有什么问题,我如何完成这个事件