2012-01-08 93 views
2

有一个HTML的结构是这样的:jQuery的显示/隐藏的div

<div id="newest"> 
    <nav> 
     <ul id="newNav"> 
      <li><a href="#">Dani's Photos</a></li> 
      <li><a href="#">Alex's Photos</a></li> 
     </ul> 
    </nav> 
    <ul class="dani"> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     ... 
    </ul> 
    <ul class="alex"> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     ... 
    </ul> 
</div> 

丹妮的照片对应UL类= “达尼”和Alex的照片UL类= “亚历克斯”。我需要的是只显示1 ul,并在显示/隐藏另一个时点击里面的链接,默认显示第一个ul。

任何想法?

+0

我试图适应这个我的需求:http://jqueryfordesigners.com/coda滑动效果/但没有设法让它工作,因为我需要 – Alex 2012-01-08 16:47:48

回答

2

我会做这样的

<div id="newest"> 
    <nav> 
     <ul id="newNav"> 
      <li><a href="#" data-target="dani">Dani's Photos</a></li> 
      <li><a href="#" data-target="alex">Alex's Photos</a></li> 
     </ul> 
    </nav> 
    <ul class="dani"> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     ... 
    </ul> 
    <ul class="alex"> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     ... 
    </ul> 
</div> 

$(function(){ 
    $('#newNav a').click(function(){ 
     var selected = $(this).data('target'); 
     $('#newest > ul').hide().filter('.' + selected).show(); 
    }).first().click(); 
}); 

演示在http://jsfiddle.net/gaby/zkPcb/

+0

magnifico :)。感谢您的帮助 – Alex 2012-01-08 17:06:56

3
$(function(){ 
    $(".alex").hide(); 
}); 
$("#dan").click(function() 
{ 
    $(".alex").hide(); 
    $(".dani").show(); 

}); 
$("#alex").click(function() 
{ 
    $(".dani").hide(); 
    $(".alex").show(); 
}); 

下面是示例:http://jsfiddle.net/yFDUB/4/

编辑:根据你的评论,你需要的工程ULS 的n个我包裹ULS在一个div id为“divItems一个通用的解决方案“我假设divs的类名和链接的id是相同的。

$(function(){ 

    $("#divItems ul").hide(); 
    $("#divItems ul:first").show(); 
}); 

$("#newNav a").click(function() 
{ 
    $("#divItems ul").hide(); 
    var className=$(this).attr("id"); 
    var objToShow= $("."+className); 
    objToShow.fadeIn(); 

}); 

下面是示例:http://jsfiddle.net/yFDUB/10/

+0

谢谢你,但问题是这个ul会比alex和dani多得多,而我正在跳跃fo采用更“自动化”的方式。 – Alex 2012-01-08 16:49:59

+0

非常感谢你,但我已决定使用@Gaby aka G. Petrioli版本 – Alex 2012-01-08 17:07:35

4

修改你的HTML这样的:

<div id="newest"> 
    <nav> 
     <ul id="newNav"> 
      <li><a href="#dani">Dani's Photos</a></li> 
      <li><a href="#alex">Alex's Photos</a></li> 
     </ul> 
    </nav> 
    <ul id="dani" class="photos"> 
     <li>....Dani....</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
    </ul> 
    <ul id="alex" class="photos"> 
     <li>....Alex....</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
     <li>........</li> 
    </ul> 
</div> 

然后在jQuery的:

$("#newNav A").on("click", function() { 
    $(".photos").hide(); 
    var target = $(this).attr("href"); 
    $(target).show(); 
}); 

Example Fiddle

+0

这看起来不错,尝试并会让你知道结果 – Alex 2012-01-08 16:54:26

+0

+1这就是我完成它的方式,它最有意义语义。 – 2012-01-08 16:55:15

+0

谢谢,但我决定使用@Gaby aka G. Petrioli的版本 – Alex 2012-01-08 17:07:56