DataTables - Extracting search values

Trying to extract the data-* values and create a select list out of it.

by Vijay K

HTML

<link rel="stylesheet" href="//cdn.datatables.net/1.10.2/css/jquery.dataTables.css">
<script src="//cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js"></script>
<table id="tbl">
    <thead>
        <tr>
            <th>Source Server</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td data-search="Server 1">
                <img class="testImg" />Server 1</td>
        </tr>
        <tr>
            <td data-search="Server 2">
                <img class="testImg" />Server 2</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <th data-role="dtFilterSelect"></th>
        </tr>
    </tfoot>
</table>

CSS

.testImg {
background: 
    url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7)
    no-repeat
    left center;
  padding: 5px 0 5px 25px;
}

JavaScript

$(function () {
    var tbl = $('#tbl');
    var dtbl = tbl.DataTable();
    $('th[data-role="dtFilterSelect"]', tbl).each(function (i) {
        SetupSelectFilter(this, i, dtbl);
    });
});

function SetupSelectFilter(obj, i, dt) {
    var colIndex = $(obj).parent().children().index($(obj));
    var select = $('<select><option value="">All</option></select>')
        .appendTo($(obj).empty())
        .on('change', function () {
        var val = $(this).val();
        dt.column(colIndex)
            .search('^' + val + '$', true, false)
            .draw();
    });

    dt.column(colIndex).data().unique().sort().each(function (d, j) {
        select.append('<option value="' + d + '">' + d + '</option>');
    });
}