2012-04-06 5 views
1

Ich bin ein Anfänger Programmierer und ich bin mit dem folgenden Problem stecken: Wenn ich eine verschachtelte ungeordnete Liste habe, wie kann ich nur die Elemente auf ein bestimmtes Niveau kopieren? Zum Beispiel, wenn ich diese ungeordnete Liste zu den ersten beiden Ebenen zu reduzieren:Bestimmte Ebenen aus einer ungeordneten Liste kopieren?

<ul> 
    <li>A</li> 
    <ul> 
    <li>C<br> 
    </li> 
    <li>D<br> 
    </li> 
    <ul> 
     <li>E<br> 
     </li> 
     <li>F<br> 
     </li> 
     <ul> 
     <li>G<br> 
     </li> 
     <li>H<br> 
     </li> 
     </ul> 
    </ul> 
    <li>E<br> 
    </li> 
    </ul> 
    <li>B</li> 
</ul> 

zu

<ul> 
    <li>A</li> 
    <ul> 
    <li>C<br> 
    </li> 
    <li>D<br> 
    </li> 
    <li>E<br> 
    </li> 
    </ul> 
    <li>B</li> 
</ul> 

Gibt es eine einfache Möglichkeit, dies zu erreichen?

Antwort

1

Einfache Version:

$('ul ul ul').remove(); 

jsFiddle Demo

Ich schrieb auch eine kleine Funktion, die Sie ein Wurzelelement und eine Ebene auch angeben können:

function reduce(root, selector, level) { 
    var use = root; 
    for (var i = 0; i <= level; i++) { 
     use += ' ' + selector; 
    } 
    $(use).remove(); 
} 

Verwendung durch den Aufruf:

//if the lists are in an element with the id 'root', see Demo 
reduce('#root', 'ul', 2); 

jsFiddle Demo

+1

Vielen Dank, großartige Lösung! – Elip

1

Dies sollte so etwas wie $('ul ul ul').remove() sein, aber man würde es besser umschließen zum Beispiel in div mit id oder Klasse, so dass Sie lokale Spülung tun können $('div.twolvls ul ul ul').remove()

0

Wenn Sie einfach 3. Ebene ungeordnete Listen zu entfernen, könnten Sie $(ul ul ul).remove() verwenden.

+0

Sie haben die Anführungszeichen '$ ('ul ...' vergessen – j08691