我有两个或更多无序列表,每个列表中的第一个列表项可见,其他列表项隐藏。
当第一个列表itme被点击时,它应该显示下面的所有其他li并隐藏在另一个ul中打开的任何其他li。
我似乎无法正确显示它。
我无法更改我的示例中的类名,因为它们是在核心代码内部生成的并用于其他元素。
感谢您的帮助。
答案 0 :(得分:3)
试试这个:
$('ul').on('click','.maincat',
function(e){
// prevents the default click action of the a element
e.preventDefault();
// finds the sibling elements, and shows them if hidden,
// hides them if visible
$(this).siblings().toggle();
// finds the closest ul ancestor of the clicked element
// finds the other ul siblings of that ancestor-ul
// finds the '.maincat' class element's siblings that are visible
// hides those visible elements
$(this)
.closest('ul')
.siblings('ul')
.find('.maincat')
.siblings('li:visible')
.hide();
});
已编辑以添加引用(如下)和此注释:
请注意,从jQuery 1.7开始,不推荐使用live()
方法(因此,支持可能,或者更可能 将被删除)。对于jQuery 1.7+,请使用on()
方法(请参阅下面的参考资料),在1.7之前,建议优先使用delegate()
方法。
本笔记的参考资料是live()
的API文档,请参阅参考资料。
请注意
参考文献: