0

I am trying to sort this list:

<div id="mainMenu">
    <span>Thing 5</span>
    <span>Thing 4</span>
    <span>Thing 7</span>
    <span>Thing 1</span>
    <span>Thing 5</span>
    <span>Thing 6</span>
    <span>Thing 3</span>
</div>

I have tried:

$('#mainMenu').sort(function(){
    $(this).children().sort();
});

I want it sorted in this order:

<span>Thing 1</span>
<span>Thing 2</span>
<span>Thing 3</span>
<span>Thing 4</span>
<span>Thing 5</span>
<span>Thing 6</span>
<span>Thing 7</span>
Gajus
  • 69,002
  • 70
  • 275
  • 438

2 Answers2

1

Try this,

$span = $('#mainMenu span').sort(function(a, b) {
    if ($(a).text() < $(b).text()) return -1;
    if ($(a).text() > $(b).text()) return 1;
    return 0;
});
$('#mainMenu').html($span);

Demo

Rohan Kumar
  • 40,431
  • 11
  • 76
  • 106
1

Try this code work perfectly:

var mylist = $('#mainMenu');
var listitems = mylist.children('span').get();

listitems.sort(function(a, b) {
   return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
});
$.each(listitems, function(index, item) {
   mylist.append(item); 
});
Mr.G
  • 3,413
  • 2
  • 16
  • 20