Jquery菜单 – 更改为鼠标hover
我不太使用JQuery,在这种情况下,它是通过菜单生成器创建的菜单,我的问题是我正在尝试将其从ONCLICK触发器更改为mouseover / mouseout函数。 我没有发布我尝试的所有变体,因为它很多而且大多数都没有function,我确实在JQuery中使用MOUSEOVER和MOUSEOUT得到了一个function版本代码,但它导致了这种奇怪的弹跳效果,菜单会扩展/即使在初始鼠标hover发生后没有鼠标移入/退出菜单,也会关闭/展开/关闭/展开。 如果有人可以查看我编辑的最后一个代码,并建议我接近它的错误和正确的代码我会很感激。
这是原始的JQuery代码:
( function( $ ) { $( document ).ready(function() { $('#cssmenu li.has-sub>a').on('click', function(){ $(this).removeAttr('href'); var element = $(this).parent('li'); if (element.hasClass('open')) { element.removeClass('open'); element.find('li').removeClass('open'); element.find('ul').slideUp(); } else { element.addClass('open'); element.children('ul').slideDown(); element.siblings('li').children('ul').slideUp(); element.siblings('li').removeClass('open'); element.siblings('li').find('li').removeClass('open'); element.siblings('li').find('ul').slideUp(); } }); }); } )( jQuery );
这是HTML:
这是我最后一个版本,但我在以下方面取得了巨大的成功:
( function( $ ) { $( document ).ready(function() { $('#cssmenu li.has-sub>a').on('mouseover', function(){ $(this).removeAttr('href'); var element = $(this).parent('li'); if (element.hasClass('open')) { element.removeClass('open'); element.find('li').removeClass('open'); element.find('ul').slideUp(); } else { element.addClass('open'); element.children('ul').slideDown(); element.siblings('li').children('ul').slideUp(); element.siblings('li').removeClass('open'); element.siblings('li').find('li').removeClass('open'); element.siblings('li').find('ul').slideUp(); } }); $('#cssmenu li.has-sub>a').on('mouseout', function(){ $(this).removeAttr('href'); var element = $(this).parent('li'); if (element.hasClass('open')) { element.removeClass('open'); element.find('li').removeClass('open'); element.find('ul').slideUp(); } else { element.addClass('open'); element.children('ul').slideDown(); element.siblings('li').children('ul').slideUp(); element.siblings('li').removeClass('open'); element.siblings('li').find('li').removeClass('open'); element.siblings('li').find('ul').slideUp(); } }); }); } )( jQuery );
我只是试图让“扩展”发生ONMOUSEOVER并在ONMOUSEOUT上发生“崩溃”。 在此先感谢您的帮助。
希望这可以帮助
已修改您编写的jquery以执行菜单的滑动
$(document).ready(function () { $("#cssmenu li.has-sub a").on('mouseenter', function () { //this line finds the 'ul' which is inside the 'li' which has the class //'has-sub',then slidedown the 'ul' and add a class check to it $(this).next('ul').slideDown().addClass('check'); }); $("#cssmenu li.has-sub ul").on('mouseleave', function () { //when mouseleave the 'ul' check if the 'ul' has class 'check', then 'slideup' //the that 'ul' and remove the class check; if ($(this).hasClass('check')) { $(this).slideUp().removeClass('check'); } }); });
CSS
#cssmenu { width:250px; } #cssmenu ul ul { display: none; } #cssmenu li.active ul { display: block; }
我更喜欢使用mouseleave和mouseenter,然后使用mouseover和mouseout。 查看此网站了解更多详情。
这是工作小提琴