Jquery - 幻灯片菜单(HandMade)

时间:2011-11-02 17:10:28

标签: jquery html css

你们是怎样的人?,我正在使用ul / li(ul / li)为一个幻灯片菜单做一个脚本,我的想法是在没有内部类的情况下使用slideup / down

我遇到的麻烦是点击我的ul(父亲)里面的链接(儿子)ul li a son's ul(ul li ul)get hide。如果您点击ul li a而不是在ul li ul li a中,那么这个想法就是这样做。我试着用“:first”,“。first {”“,”:first-child“。

希望可以让自己清楚。 :d

这是代码:

HTML

    <ul id="menu"> 
       <li> 
           <a href="#">Menu 1</a> 
           <ul> 
                <li><a href="#">Sub Menu 1</a></li> 
                <li><a href="#">Sub Menu 2</a></li> 
                <li><a href="#">Sub Menu 3</a></li> 
            </ul> 
        </li> 
        <li> 
           <a href="#">Menu 2</a> 
           <ul> 
                <li><a href="#">Sub Menu 1</a></li> 
                <li><a href="#">Sub Menu 2</a></li> 
                <li><a href="#">Sub Menu 3</a></li> 
            </ul> 
        </li> 
        <li><a href="#">Menu 3</a></li> 
    </ul> 

Javascript(Jquery)

    function submenu(id) { 
       var div = "#"+id; 
       $("ul"+div+" li a").each(function () { 
          $(this).click(function() { 
             var li = $(this).parent();       
             $("ul"+div+" li ul").each(function () {   $(this).slideUp("fast");   }); 
             if(li.children("ul").is(":visible")) {  
                li.children("ul").slideUp("fast"); 
             } else {  
                li.children("ul").slideDown("fast");  
             } 
             return false; 
          }); 
       }); 
    } 

    $(document).ready(function(){   submenu("menu");   } 

由于

2 个答案:

答案 0 :(得分:0)

使用子css选择器('ul。'+ div +'&gt; li&gt; a)或使用jQuery选择子项。

$(div).children(li).children(a).each(function() {
  /* your code here */
});

如你所知,你的第一个选择器正在抓住列表中的所有锚点。

答案 1 :(得分:0)

如果我真的理解你的问题,我不会知道,但这里有一个jsfiddle: http://jsfiddle.net/BVVGX/

如果你点击一个孩子,没有任何反应,但如果你点击一个父亲,它会向上或向下滑动自己的孩子。

修改: http://jsfiddle.net/BVVGX/6/

关键是在slideDown之后添加一个回调,以便在slideDown期间隐藏其他已打开的菜单.Jquery并不真正知道ul是否可见。