jQuery:只选择ul,而不是ul ul
我正在尝试使用jQuery击败基本的手风琴风格菜单。
这是菜单:
http://www.cybart.com/bscg/
这是一段代码,为其提供手风琴function:
$('#access ul li').click(function(){ $('#access ul ul:visible').slideUp(); $(this).children('ul:hidden').slideDown(); });
问题:单击子菜单链接会使子菜单向上滑动(并关闭)。
我想在单击子菜单链接时保持子菜单打开,并且仅在单击顶级链接时向上滑动。
如何通过jQuery仅选择顶级ul来为子菜单设置动画? 或者有没有办法选择子菜单链接并“告诉它”以保持子菜单点击打开?
我很感激你的智慧!
看起来你需要在CSS中使用>
运算符。
.foo > .bar
选择具有类bar
所有元素,类bar
是具有类foo
的元素的直接子元素
得到它,工作代码:
$('#access ul.menu > li > a').click(function(){ $('#access ul ul:visible').slideUp(); $(this).siblings('ul').slideDown(); }); });
为了防止菜单再次向上滑动,这有效:
$('#access ul.menu > li > a').click(function(){ var siblingUl = $(this).siblings('ul'); if(siblingUl.is(':visible')) { // The currently open menu was clicked // Remove this if you want nothing to happen siblingUl.slideUp(); return; } $('#access ul ul:visible').slideUp(); siblingUl.slideDown(); }); });
您无法停止关闭菜单,因为浏览器正在发出新请求并在您单击链接时加载菜单。 只需观看url栏即可。 单击子菜单链接时,URL会更改。
您需要向URL添加内容以阻止子菜单折叠,或者测试URL以查看是否应在页面加载后重新打开手风琴。
这更简单,对我有用。
$(".parent").click(function() { $(this).children('ul').slideToggle(); });