如何让这个基本的jQuery Nav切换?

时间:2011-08-02 18:28:55

标签: jquery navigation

我仍然是jQuery的新手,所以对于你们中的许多人来说,下面的内容似乎很基本。

我正在研究使用jQuery的手风琴导航(但我没有使用jQuery UI)。该页面位于:http://www.rouviere.com/nav/index.html

这是HTML:

<div id="subContent">
<ul>
<li><a href="nikon.html">Nikon</a></li>

<li class="cameras"><a href="#" class="drop">Cameras</a>
<ul>
<li><a href="nikon-d3x.html">Nikon D3x</a></li>
<li><a href="nikon-d3s.html">Nikon D3s</a></li>
<li><a href="nikon-d700.html">Nikon D700</a></li>
<li><a href="nikon-d300s.html">Nikon D300s</a></li>      
</ul>
</li>

<li class="lenses"><a href="#" class="drop">Lenses</a>
<ul>
<li><a href="24-70.html">Nikkor 24-70 f2.8</a></li>
<li><a href="80-200.aspx">Nikkor 80-200 f2.8</a></li> 
<li><a href="300.html">Nikkor 300 f2.8</a></li>
<li><a href="50.html">Nikkor 50 f1.4</a></li>
</ul>
</li>

<li class="bags"><a href="#" class="drop">Bags</a>
<ul>
<li><a  href="bag1.html">Small Bag</a></li>
<li><a href="bag2.html">Medium Bag</a></li>
<li><a href="bag3.html">Large Ba</a></li>
</ul>
</li> 
<li><a href="#" class="drop">Memory Cards</a></li>
</ul>
</div>

这是jQuery:

<script type="text/javascript">
$(function(){
    $('.interior #subContent > ul > li > a.drop').click(function(){
    $(this).parent().children('ul').toggle("slow");
         return false;
    });

    $(window).ready(function() {
        $('li.cameras ul').hide();
        $('li.lenses ul').hide();
        $('li.bags ul').hide();
    }); 
}); 
</script>

页面显示ul ul ul全部折叠,但是,当您单击父链接时,它们不会切换打开。

我很感激经验丰富的一两个人对此进行审核并帮助我找出遗漏的内容。

谢谢!

3 个答案:

答案 0 :(得分:3)

试试这个。我为你的主要类别(相机,镜头和包)创建了一个单独的类。然后我告诉按钮在LI中找到UL并切换它。

<div id="subContent">
<ul>
<li><a href="nikon.html">Nikon</a></li>

<li class="main"><a href="#">Cameras</a>
<ul>
<li><a href="nikon-d3x.html">Nikon D3x</a></li>
<li><a href="nikon-d3s.html">Nikon D3s</a></li>
<li><a href="nikon-d700.html">Nikon D700</a></li>
<li><a href="nikon-d300s.html">Nikon D300s</a></li>      
</ul>
</li>

<li class="main"><a href="#">Lenses</a>
<ul>
<li><a href="24-70.html">Nikkor 24-70 f2.8</a></li>
<li><a href="80-200.aspx">Nikkor 80-200 f2.8</a></li> 
<li><a href="300.html">Nikkor 300 f2.8</a></li>
<li><a href="50.html">Nikkor 50 f1.4</a></li>
</ul>
</li>

<li class="main"><a href="#">Bags</a>
<ul>
<li><a href="bag1.html">Small Bag</a></li>
<li><a href="bag2.html">Medium Bag</a></li>
<li><a href="bag3.html">Large Ba</a></li>
</ul>
</li> 
<li><a href="#">Memory Cards</a></li>
</ul>
</div>

jQuery下面:

<script type="text/javascript">
$(function(){
    $('li.main').click(function(){
    $(this).find('ul').toggle("slow");
         return false;
    });

    $(document).ready(function() {
        $('li.main ul').hide();
    }); 
}); 
</script>

这种方式使用的代码更少,将来更容易扩展。希望它有所帮助!

答案 1 :(得分:2)

更短的写作方式:

$(function() {
    $('#subContent > ul > li')
        .children('a.drop').click(function() {
            $(this).siblings('ul').toggle("slow");
            return false;
        }).end()
        .children('ul').hide();
}); 

$(window).ready()毫无意义。我很惊讶它之前做了什么。

更有意义和可扩展的写作方式可能就是:

$(function() {
    $('#subContent > ul > li').each(function() {
        var toggler = $(this).children('a.drop');
        var sublist = $(this).children('ul');

        toggler.click(function() {
            sublist.toggle("slow");
            return false;
        });
        sublist.hide();
    });
});

答案 2 :(得分:1)

我认为您需要将代码更新为

<script type="text/javascript">
$(function(){
    $('#subContent > ul > li > a.drop').click(function(){
    $(this).parent().children('ul').toggle("slow");
         return false;
    });

    $(window).ready(function() {
        $('li.cameras ul').hide();
        $('li.lenses ul').hide();
        $('li.bags ul').hide();
    }); 
}); 
</script>