2010-12-29 5 views
0

in meinem Baum, den ich mit Hilfe von jquery mache, wenn ich den Elternknoten entfernen, ich möchte, dass seine unmittelbaren Kinder Eltern werden.entfernen Knoten in einem Baum nicht seine Ebene beibehalten

Aber wenn die unmittelbaren Kinder Geschwister/Geschwister auf gleicher Ebene als alle Geschwister haben, sollte ein Wurzelknoten werden. Ich denke, es wäre klarer mit meinem Beispiel.

  • ein
    • b
      • c
    • d
    • e

dies als mein Baum betrachten was ich will ist, wenn ich a als b entfernen, d, e sollte individuellen Wurzelknoten werden und c sollte unter b kommen.

ich kleben meinen Code es erreicht die Wurzel Knoten Sache, aber es macht c als das gleiche Niveau von b.

 var liFirst = $(spnElement).parents('li:first'); 
     $(childPrsnt).insertBefore(liFirst); 

     $(spnElement).parents('li:first').remove(); 
     $(childPrsnt).find('li').unwrap('ul:first'); 

Antwort

1

Sie wollen nur sofort Kinder (nicht alle Nachkommen), so .children() statt .find() Verwendung hier, wie folgt aus:

var liFirst = $(spnElement).parents('li:first'); 
$(childPrsnt).insertBefore(liFirst); 

$(spnElement).closest('li').remove(); 
$(childPrsnt).children('li').unwrap(); 

Auch die Verwendung von .closest() beachten statt .parent() mit :first, es ist nur eine billigere/kürzere Möglichkeit, das gleiche Element zu bekommen.

Verwandte Themen