2015-09-13 76 views
0

我使用表和行可以有子行,它可以向下幾級, 現在發生的事情是,當隱藏子元素時,它然後打開該子元素的子元素。jQuery隱藏子元素打開它的子​​元素

繼承人我的jQuery:

$(document).ready(function() { 
    function getChildren($row) { 
     var children = [], level = $row.attr('data-level'); 
     while($row.next().attr('data-level') > level) { 
      children.push($row.next()); 
      $row = $row.next(); 
     }    
     return children; 
    }   
    $('.parent').on('click', function() { 
     var children = getChildren($(this)); 
     $.each(children, function() { 
      $(this).toggle(); 
     }) 
    }); 
    $(".parent a").click(function(e) { 
    e.stopPropagation(); 
    }) 
}) 

我已經設置了的jsfiddle所以你可以看到發生了什麼

https://jsfiddle.net/rhvye8k0/4/

如果單擊第一個 「+」,你會看到想什麼IM來描述。

想不出如何梳理出來


更新,

已經整理並更新的jsfiddle https://jsfiddle.net/rhvye8k0/5/

有可能是減少了jQuery的方式,但它適用於現在

+0

問題與數據級別的值。確保它們是正確的 –

回答

0

您的問題是.parent的onclick處理程序中的$(this).toggle();。在3級的trstyle="display:none",其他人沒有。 toggle()將切換接收元素的可見性,以便其他人被顯示(他們的display隱含地爲block)並且級別3被隱藏。

+0

我曾認爲這將是與此有關的事情。生病需要想辦法改變它 – Callum