2016-04-18 4 views
0

Ich muss einige Kinder Elemente mit definierten Klasse neu ordnen und die alte Reihenfolge der anderen beibehalten, die nicht die Klasse hat. Ich habe andere UnterelementeReverse Kinderelemente mit jQuery

-Code - html

<ul class="menu_dinamico"> 
<li class="reverseMenu"><a href="#">Item 1</a></li> 
<li class="reverseMenu">Item 2</li> 
     <ul> 
     <li>item 2.1</li> 
     <li>item 2.2</li> 
     </ul> 
<li class="reverseMenu">Item 3</li> 
<li class="reverseMenu">Item 4</li> 
<li>Item 4.5</li> 
<li>Item 5</li> </ul> 

-Code - Javascript

$.fn.reverse = [].reverse; 
var list = $('.menu_dinamico'); 
var listItems = list.children('.reverseMenu'); 
list.prepend(listItems.get().reverse()); 

Das Ergebnis

  • Artikel 4
  • Artikel 3
  • Artikel 2
  • item 1
  • Artikel 2.1
  • 2.2
  • Artikel 4.5
  • Artikel 5

Das Ergebnis wollte

  • Artikel 4
  • Punkt 3
  • Punkt 2
    • Punkt 2.1
    • Artikel 2,2
  • item 1
  • Punkt 4.5
  • Artikel 5

Ps: Ich habe die aufrechtzuerhalten HTML-Struktur wie Links, Attribute etc.

Irgendwelche Hinweise? Vielen Dank!

Edit:

Nach @bubicsaszar Antwort, die ich erkennen, dass meine Frage nicht vollständig war, weil meine Liste unendlich Teillisten haben kann und ihre Struktur erhalten werden muss.

+0

Thank you! Ich sehe es nicht kommen! Es funktionierte. –

Antwort

1

versuchen Sie dies, wenn die konstanten Elemente immer am Ende der Liste:

$.fn.reverse = [].reverse; 
var list = $('.menu_dinamico'); 
var listItems = list.children('.reverseMenu'); 
list.prepend(listItems.get().reverse()); 
+0

Ich hatte ein Problem. Tatsächlich war meine Frage nicht vollständig. Ich habe es bearbeitet. –

+0

könntest du mir helfen? –

+1

in diesem Fall, ich denke, Sie müssen nur Ihre Markup ändern (die Unterlisten sollten in den Li-Tags sein) https://jsfiddle.net/z4Lgqb0h/ – ltamajs