2010-04-23 8 views
0

J'utilise jstree pour construire un menu arborescent.
Lorsque vous sélectionnez un élément dans l'arborescence, un div sur la droite affiche certaines informations. L'information peut être supprimée.
Quand il est supprimé, je supprime cet élément de l'arborescence.
Le problème est lorsque le dernier li est retiré du ul, j'ai besoin de supprimer le ul et aussi supprimer les classes "open" et "close" du li parent et ajouter la classe "leaf".
J'ai du mal à cibler le ul et à cibler à son tour le li parent. Je dois utiliser la classe "clicked" comme référence de départ.Jquery: Comment cibler le parent ul et compter le li est tenu?

Voici le code html arbre:

<li id="447" class="open"> 
    <a href="#"><ins>&nbsp;</ins>ZigBee Remote Pairing-D</a> 
    <ul> 
     <li id="470" class="leaf last clicked"> 
       <a href="#"><ins>&nbsp;</ins>RCA TV2 - Audio Quality-F</a> 
     </li> 
    </ul> 
</li> 

ici est le jquery:

var numLi = $(".clicked").parent("ul:first > li").size();//get number of li in ul    
if (numLi == 1){ 
    $(".clicked").parent("ul:first").parent("li:first").removeClass().addClass("leaf"); 
} 
$(".clicked").parent("li:first").remove();//remove the list item from the tree 

Répondre

0

Quelque chose comme cela devrait fonctionner:

var clickedLi = $('.clicked').parent('li'); 
var parentUlOfClickedLi = clickedLi.parent('ul'); 
if (parentUlOfClickedLi.children('li').length === 1) { 
    parentUlOfClickedLi.parent('li') 
     .removeClass('open close') 
     .addClass('leaf'); 
} 
clickedLi.remove(); 
+0

Je jure que j'essayé, peut-être ma syntaxe était faux. Eh bien, merci beaucoup cela a résolu mon problème. Tu gères! – ozruiz

Questions connexes