2016-08-18 52 views
-1

假設我有一個結構如下:jQuery的嵌套手風琴,只顯示一個級別

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3 
     <ul> 
      <li>Item11</li> 
      <li>Item12</li> 
      <li>Item13</li> 
     </ul> 
    </li> 

這種樹狀結構可以有多個層次。

起初,我想說明以下列表:

Item 1 

Item 2 

Item 3 + 

當我點擊+列表上變成

Item 3 - 

    Item 11 

    Item 12 

    Item 13 

所以,家長列表中消失以及子表所示。 如果我點擊 - ,那麼一切都會返回到前一個列表。

有沒有這樣做的一些jquery插件?

也許,手風琴的一些選擇?

在此先感謝。

+0

你只是想保持創建的靜態內容更深的子樹或你想用某種有意義的信息來填充呢? – Damon

+0

內容是靜態的。我已經有這個ul列表。 –

+0

簡單,不要嵌套它們。當第3項打開時,隱藏第一項並顯示下一項。 –

回答

0

使用Dkouk他的版本來創建你所需要的。

編輯1:隱藏其他菜單項 編輯2:第二級菜單

$(function() { 
 
    
 
    
 
    $('ul li').each(function() { 
 
    if ($(this).find('ul').length > 0){ 
 
    $(this).addClass('child'); 
 
    } 
 

 

 
    
 
    }); 
 
    
 
    $('ul li.child span').click(function() { 
 
    $(this).parent().toggleClass('open').find('ul').first().slideToggle(); 
 
    
 
      $(this).parent().siblings().slideToggle(); 
 

 
    
 
}); 
 
    
 
    
 
});
ul { 
 
    list-style:none; 
 
} 
 
ul li.child span:after { 
 
    content:"+"; 
 
} 
 
ul li.child.open span:after { 
 
    content:"-"; 
 
} 
 
li ul { display:none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<ul class="main"> 
 
    <li><a href="#">Item 1</a></li> 
 
    <li><a href="#">Item 2</a></li> 
 
    <li> 
 
    <span>Item 3</span> 
 
    <ul> 
 
     <li><a href="#">Item 1</a></li> 
 
     <li> 
 
     <span>Item 2</span> 
 
     <ul> 
 
      <li><a href="#">Item 1</a></li> 
 
      <li><a href="#">Item 2</a></li> 
 
      <li><a href="#">Item 3</a></li> 
 
     </ul> 
 
     </li> 
 
     <li><a href="#">Item 3</a></li> 
 
    </ul> 
 
    </li> 
 
</ul>

+0

這不起作用。當我點擊項目3時,項目1和項目2應該消失。 –

+0

我認爲這應該做你需要的一切。 :) http://codepen.io/bucky208/pen/ZOkJdy 請刪除'-1':( – Bucky208

+0

當我再添加一個深度時不起作用 –

-1

您可以將類添加到列表中時,它有一個子表,並切換列表,切換另一個班級的父母,因此可以將'+'更改爲' - '。

你可以儘可能多的級別,並且代碼將工作, 我已經添加一個跨度列表有孩子,但所以只能觸發點擊文本,如果你觸發單擊李列表並打開子列表然後再次關閉。

您可以設置內容的樣式。 這裏一個簡單的例子:

$(function() { 
 
     
 
    
 
     $('ul li').each(function() { 
 
     if ($(this).find('ul').length > 0){ 
 
     $(this).addClass('child'); 
 
     } 
 

 

 
     
 
     }); 
 
     
 
     $('ul li.child span').click(function() { 
 
     $(this).toggleClass('open').parent().find('ul:first').slideToggle(); 
 
     $(this).parent().siblings().slideToggle(); 
 
    }); 
 
     
 
     
 
    });
ul { 
 
     list-style:none; 
 
    } 
 
    ul li.child span:after { 
 
     content:"+"; 
 
    } 
 
    ul li.child span.open:after { 
 
     content:"-"; 
 
    } 
 
    ul li ul { display:none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
    <ul> 
 
     <li><a href="#">Item 1</a></li> 
 
     <li><a href="#">Item 2</a></li> 
 
     <li> 
 
     <span>Item 3</span> 
 
     <ul> 
 
      <li><a href="#">Item 1</a></li> 
 
      <li><a href="#">Item 2</a></li> 
 
      <li> 
 
      <span>Item 3</span> 
 
      <ul> 
 
       <li><a href="#">Item 1</a></li> 
 
       <li><a href="#">Item 2</a></li> 
 
      </ul> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
    </ul>

+0

根據此片段項目1,項目2在單擊加號時可見。 –

+0

你可以讓他們點擊,也可以讓項目3點擊並滑動切換裏面的ul孩子。 如果你想我可以改變代碼,使其點擊,如果你不知道如何去做 – Dkouk

+0

是的。請更改代碼。 –