jQuery UI Sortable on Click

You can drag and drop or click to sort the lists.

HTML

<link rel="stylesheet" href="http://tinyurl.com/889ufwc">

<ul id="unassigned_list" class="connected_sortable">
        <li class="ui-state-default"><div class="draggable_area">Item 1</div><div class="click_area">&#8594;</div><div class="cl"></div></li>
        <li class="ui-state-default"><div class="draggable_area">Item 2</div><div class="click_area">&#8594;</div><div class="cl"></div></li>
        <li class="ui-state-default"><div class="draggable_area">Item 3</div><div class="click_area">&#8594;</div><div class="cl"></div></li>
        <li class="ui-state-default"><div class="draggable_area">Item 4</div><div class="click_area">&#8594;</div><div class="cl"></div></li>
        <li class="ui-state-default"><div class="draggable_area">Item 5</div><div class="click_area">&#8594;</div><div class="cl"></div></li>
    </ul>
    
    <ul id="recipients_list" class="connected_sortable">
        <li class="ui-state-highlight"><div class="draggable_area">Item 1</div><div class="click_area">&#8592;</div><div class="cl"></div></li>
        <li class="ui-state-highlight"><div class="draggable_area">Item 2</div><div class="click_area">&#8592;</div><div class="cl"></div></li>
        <li class="ui-state-highlight"><div class="draggable_area">Item 3</div><div class="click_area">&#8592;</div><div class="cl"></div></li>
        <li class="ui-state-highlight"><div class="draggable_area">Item 4</div><div class="click_area">&#8592;</div><div class="cl"></div></li>
        <li class="ui-state-highlight"><div class="draggable_area">Item 5</div><div class="click_area">&#8592;</div><div class="cl"></div></li>
    </ul>

CSS

.cl{
    clear: both;
    font-size: 0;
    height: 0;
    overflow: hidden;}   

#unassigned_list, #recipients_list {
    list-style-type: none;
    margin: 0;
    padding: 0 0 2.5em;
    float: left;
    margin-right: 10px;}

#unassigned_list li, #recipients_list li {
    margin: 0 5px 5px 5px;
    padding: 5px;
    font-size: 1.2em;}

.draggable_area{
    float: left;
    width: 150px;
    height: 50px;}
                            
.click_area{
    width: 26px;
    float: right;
    background: #fff;
    border: 1px solid #ccc;
    padding: 5px;
    font-size: 26px;
    cursor: pointer;}

JavaScript

$("#unassigned_list, #recipients_list").sortable({
    connectWith: ".connected_sortable",
    items: "li",
    handle: ".draggable_area",
    stop: function(event, ui) {
        updateLi(ui.item);
    }
}).disableSelection().on("click", ".click_area", function() {
    // First figure out which list the clicked element is NOT in...
    var otherUL = $("#unassigned_list, #recipients_list").not($(this).closest("ul"));
    var li = $(this).closest("li");

    // Move the li to the other list. prependTo() can also be used instead of appendTo().
    li.detach().appendTo(otherUL);

    // Finally, switch the class on the li, and change the arrow's direction.
    updateLi(li);
});

function updateLi(li) {
    var clickArea = li.find(".click_area");
    if (li.closest("ul").is("#recipients_list")) {
        li.removeClass("ui-state-default").addClass("ui-state-highlight");
        clickArea.html('&#8592;');
    } else {
        li.removeClass("ui-state-highlight").addClass("ui-state-default");
        clickArea.html('&#8594;');
    }    
}