There can be possibilities that initially in the first case the list isn't present in the DOM and you are calling selectable on it, which is of no effect. In second case, you are calling selectable with arguments without initialising. So that throws the error. The solution is to initialise the selectable after the list is appended into the DOM and then later call it using refresh if necessary.
I created a fiddle for demo. In fiddle I initialised the selectable after the list is appended into the DOM.
$(document).ready(function () {
$(document).on('click', '.add', function () {
var listHTML = '<ol class="selectable"><li class="ui-widget-content">Item 1</li><li class="ui-widget-content">Item 2</li><li class="ui-widget-content">Item 3</li><li class="ui-widget-content">Item 4</li><li class="ui-widget-content">Item 5</li><li class="ui-widget-content">Item 6</li><li class="ui-widget-content">Item 7</li></ol>';
$('.container').append(listHTML);
$(".selectable").selectable();
return false;
});
});
Link :http://jsfiddle.net/lotusgodkk/GCu2D/66/