jquery显示列表项

时间:2012-01-25 12:48:57

标签: javascript jquery

我有两个或更多无序列表,每个列表中的第一个列表项可见,其他列表项隐藏。

当第一个列表itme被点击时,它应该显示下面的所有其他li并隐藏在另一个ul中打开的任何其他li。

我似乎无法正确显示它。

我无法更改我的示例中的类名,因为它们是在核心代码内部生成的并用于其他元素。

感谢您的帮助。

http://jsfiddle.net/ukkpower/En7KV/4/

1 个答案:

答案 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();
           });

JS Fiddle demo


已编辑以添加引用(如下)和此注释:

请注意,从jQuery 1.7开始,不推荐使用live()方法(因此,支持可能,或者更可能 将被删除)。对于jQuery 1.7+,请使用on()方法(请参阅下面的参考资料),在1.7之前,建议优先使用delegate()方法。

本笔记的参考资料是live()的API文档,请参阅参考资料。

请注意

参考文献: