2013-10-27 52 views
0

我有一個顯示樹視圖的角度指令。當你點擊li圖標時,它應該隱藏嵌套的UL。angularjs指令,jquery類選擇器不工作

這裏是一個重要的代碼(這是一個點擊功能,其中e爲click事件)

$toggler=$(e.target).closest('li'); 
if($toggler.hasClass("collapsed")){ 
$toggler.removeClass("collapsed").addClass("expanded"); 
} else { 
    $toggler.removeClass("expanded").addClass("collapsed"); 
} 
$(".collapsed").find("ul").hide(); 
$(".expanded").find("ul").show(); 

我可以在這個類被分配並完全去除的調試器看到的。但是,它只適用於我最初將課程設置爲摺疊的第一組LI。樹的更深層次顯示了類的變化,但選擇器不適用於它們。有趣的是,當你點擊更深的行時,它就像你第一次點擊根行一樣。之後它什麼都不做。

問題:爲什麼我的選擇器不工作?

這裏是我的plunkr:http://plnkr.co/edit/GZ5MZjkir4AaNQmHIxFP?p=preview

回答

1

的問題是,你首先應用.collapsed然後.expanded。所以如果你的孩子的根擴大,你的孩子總是會擴大。如果換成他們,這就像意:

$(".expanded").find("ul").show(); 
$(".collapsed").find("ul").hide(); 

所以它首先展開所有的孩子們。然後它到達第一個.collapsed孩子,崩潰它。在這之後繼續崩潰.collapsed兒童沒有視覺差異。

+0

啊我明白了,找到任何孩子,大孩子等,都可以歸還,不僅僅是直系後代。這樣可行! – Snowburnt