2014-05-21 114 views
0

我的目錄結構是這樣的:通過遍歷列表使用jQuery

<ul class="nav-list"> 
     <li class="nav-list-item first-stage"> 
      <a href=""> 
      <table> 
       <tr> 
        <td class="first">Stuff</td> 
        <td class="second"><i class="fa fa-chevron-down"></i></td> 
       </tr> 
      </table> 
      </a> 
     </li> 
    <ul class="inner-nav"> 
      <li class="nav-list-item second-stage selected"> 
       <a href=""> 
       <table> 
        <tr> 
         <td class="inner-first"><div class="icon icon-arrow-right"></div></td> 
         <td class="inner-second">Blaa</td> 
        </tr> 
       </table> 
       </a> 
      </li> 

這裏是我的jQuery:

if $(".first-stage").click(function() { 
    var nextItem = $(this).next("li").chidren(".second-stage").find("i"); 
    if ($(this).next(".inner-nav").is(":hidden")) { 
     $(this).slideDown(); 
     $(nextItem).removeClass(".fa-chevron-down").addClass(".fa-chevron-up"); 
    } else { 
     $(this).slideUp(); 
     $(nextItem).removeClass(".fa-chevron-up").addClass(".fa-chevron-down"); 
    } 
)}; 

我打不通列表遍歷工作。這應該是一個下拉列表。不要介意li周圍的「a href」。

+0

'如果$(「。first-stage」)。click(function(){'....真的是這樣。 – Jai

+3

你的html好像無效 –

+3

T他是可怕的,可怕的HTML,當您嘗試遍歷和操縱它時會造成各種問題。使用符合標準的HTML,您的Javascript生活將會輕鬆10倍。 – lonesomeday

回答

2

首先,你需要修改你的HTML,使其有效:使用slideToggletoggleClass

<ul class="nav-list"> 
    <li class="nav-list-item first-stage"> 
     <table> 
      <tr> 
       <td class="first">Stuff</td> 
       <td class="second"><i class="fa fa-chevron-down"></i></td> 
      </tr> 
     </table> 
     <ul class="inner-nav"> 
      <li class="nav-list-item second-stage selected">    
       <a href=""> 
        <table> 
         <tr> 
          <td class="inner-first"><div class="icon icon-arrow-right"></div></td> 
          <td class="inner-second">Blaa</td> 
         </tr> 
        </table> 
       </a> 
      </li> 
     </ul> 
    </li> 
</ul> 

然後你就可以簡化您的jQuery代碼:

$(".first-stage").click(function(e) { 
    var $nextItem = $('ul', this); 
    var $i = $('i', this); 
    $nextItem.slideToggle(function() { 
     $i.toggleClass('fa-chevron-down fa-chevron-up'); 
    }); 
}); 

Example fiddle

+0

這工作,否則,但我的列表結構很長,它有多個內在uls。這一次顯示了所有的內心。我想打開他們「一個一個」。這是一個例子小提琴http://jsfiddle.net/3BeGV/1/。 – user3496563