jQuery Sort DOM elements

Change class name on click in jQuery

by Ben Clayton

HTML

<div id="banner-message">

 <div>
    XXXXX
  </div>
  <div style="left:19px">
    19
  </div>

  <div style="left:120px">
    120
  </div>
  
  <div style="left:110px">
   110
  </div>
  <div style="left:140px">
    140
  </div>
  
  <div>
    ZZZZZ
  </div>
  
</div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#banner-message {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  font-size: 25px;
  text-align: center;
  transition: all 0.2s;
  margin: 0 auto;
  width: 300px;
}

button {
  background: #0084ff;
  border: none;
  border-radius: 5px;
  padding: 8px 14px;
  font-size: 15px;
  color: #fff;
}

#banner-message.alt {
  background: #0084ff;
  color: #fff;
  margin-top: 40px;
  width: 200px;
}

#banner-message.alt button {
  background: #fff;
  color: #000;
}

JavaScript

// find elements
var $msgList = $("#banner-message").children();

$msgList.sort(function(a, b) {
  var sorta = parseInt($(a).css('left'));
  var sortb = parseInt($(b).css('left'));
  if(isNaN(sorta)) return 1;
  if(isNaN(sortb)) return -1;
  if (sorta > sortb) return 1;
  if (sorta < sortb) return -1;
  return 0;
});

$msgList.detach().appendTo("#banner-message");