2012-01-08 101 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