Try my plugin http://www.athos99.com/listorder/type.html
For ordering fistname and lastname, change your list like this :
<ul id="ul1">
<li><span>Michael</span> <span>Scott</span></li>
<li><span>Jonathan</span> <span>Torry</span></li>
</ul>
For ordering by firstname
$('#ul1').listorder( { child:'li', childValue:function(){return $(this.children([0]).text();} });
For ordering by lastname
$('#ul1').listorder( { child:'li', childValue:function(){return $(this.children([1]).text();} });
$(this.children([0]) select the 1st span
$(this.children([1]) select the 2nd span