jQuery ordenar elementos utilizando ID de datos

(perdón si la pregunta ya existe)

Soy muy nuevo en el desarrollo de jQuery.

Tengo la estructura HTML de la siguiente manera:

<div class="clist">
    <div data-sid=1></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
    <div data-sid=1></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
    <div data-sid=1></div>
</div>

Me gustaría clasificarlos como:

<div class="clist">
    <div data-sid=1></div>
    <div data-sid=1></div>
    <div data-sid=1></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
    <div data-sid=2></div>
</div>

Estoy usando la funcion

function sortContacts() {
var contacts = $('div.clist'), cont = contacts.children('div');

cont.detach().sort(function(a, b) {
            var astts = $(a).data('sid');
            var bstts = $(b).data('sid')
            //return astts - bstts;
            return (astts > bstts) ? (astts > bstts) ? 1 : 0 : -1;
        });

contacts.append(cont);
}

Pero no está funcionando como se esperaba ..

Está funcionando bien por primera vez, pero cuando se agrega un elemento nuevo o se cambia el dato de datos, no funciona.

EDITAR:

Manifestación

http://jsfiddle.net/f5mC9/1/

¿no funciona?

Respuestas a la pregunta(3)

Su respuesta a la pregunta