2015-11-22 116 views
0

我想在.content divs之間導航。在.content divs之間導航

我試圖用下面的代碼來做到這一點,但它不能正常工作。

當我點擊最後一個div中的鏈接.next時,所有內容都消失了,而不是再次轉到第一個.content div。

而當我點擊鏈接上一頁,內容消失。

例如: http://jsfiddle.net/tebzsuwt/3/

的jQuery:

$(".container div").each(function(e) { 
    if (e != 0) 
     $(this).hide(); 
}); 

$(".btn-next").click(function(){ 
    if ($(".container div:visible").next().length != 0) 
     $(".container div:visible").fadeOut(function(){ 
      $(this).next().fadeIn(); 
     }); 
    else { 
     $(".divs div:visible").fadeOut(function(){ 
      $(".divs div:first").fadeIn(); 
     }); 
    } 
    return false; 
}); 

$(".btn-prev").click(function(){ 
    if ($(".container div:visible").prev().length != 0) 
     $(".container div:visible").fadeOut(function(){ 
      $(this).prev().fadeIn(); 
     }); 
    else { 
     $(".container div:visible").fadeOut(function(){ 
      $(".container div:last").fadeIn(); 
     }); 
    } 
    return false; 
}); 
+1

點擊'.btn-prev'你想下一個,點擊'.btn-next'你想要prev嗎?!看起來你已經混淆了你的邏輯......(順便說一句:「first」和「last」)。提供MCVE重複問題,這將使其更清楚 –

+0

感謝您的通知,我寫錯了,我會正確更新。我更新了一個例子。 – Oscar

回答

1

我做了你的代碼的一些細微的變化,這裏是一個工作示例

HTML:

<div class="container"> 
    <h2>Title</h2> 
    <a href="#" class="btn-prev">Prev</a> 
    <a href="#" class="btn-next">Next</a> 
    <div> 
     <div class="content"> 
      <p>test 1</p> 
      <p>test 2</p> 
      <div class="links"> 
       <a href="#">Link 1</a> 
       <a href="#">Link 2</a> 
      </div> 
     </div> 

     <div class="content"> 
      <p>test 2</p> 
      <p>test 3</p> 
      <div class="links"> 
       <a href="#">Link 2</a> 
       <a href="#">Link 3</a> 
      </div> 
     </div> 

     <div class="content"> 
      <p>test 4</p> 
      <p>test 5</p> 
      <div class="links"> 
       <a href="#">Link 4</a> 
       <a href="#">Link 5</a> 
      </div> 
     </div> 
    </div> 
</div> 

和JS :

$(".container .content").each(function(e) { 
    if (e != 0) 
     $(this).hide(); 
}); 

$(".btn-next").click(function(){ 
    if ($(".container .content:visible").next().length != 0) 
     $(".container .content:visible").fadeOut(function(){ 
      $(this).next().fadeIn(); 
     }); 
    else { 
     $(".container .content:visible").fadeOut(function(){ 
      $(".container .content:first").fadeIn(); 
     }); 
    } 
    return false; 
}); 

$(".btn-prev").click(function(){ 
    if ($(".container .content:visible").prev().length != 0) { 
     $(".container .content:visible").fadeOut(function(){ 
      $(this).prev().fadeIn(); 
     });} 
    else { 
     $(".container .content:visible").fadeOut(function(){ 
      $(".container .content:last").fadeIn(); 
     }); 
    } 
    return false; 
}); 
+0

感謝您的回答。但隨着你的更正,它有一個問題。如果您單擊prev按鈕,則不會顯示.content。 (http://jsfiddle.net/tebzsuwt/7/) – Oscar

+0

我也對HTML做了一些改變,如果你不喜歡那個版本,你所要做的就是把你的.content div包裝到另一個div中,一切都會好的 – furcicm

+1

問題是你正在使用prev(),它尋找之前的兄弟是h2。你可以改變它並傳遞一個選擇器到prev函數.prev('。content'),並且這種方式函數正在照看前面的'.content'類 – furcicm