Вот мой подход.Я создал другой элемент и «спрятал» результаты автозаполнения.Чтобы вызвать обычные события при автозаполнении, вы можете задать для контейнера автозаполнения-результатов ширину и высоту 0 с плавающей точкой (не уверен, если это необходимо) и установить переполнение скрытым.Когда появится контейнер отбрасываемых элементов, я очищаю свой контейнер результатов.Когда элемент отображается, функция _renderItem, я добавляю его в мой контейнер результатов.
$('#faq-search').autocomplete({'source': questions}, {
matchContains: true,
appendTo: "#faq-search-results .autocomplete-results",
change: function(e, ui){
},
close: function(e, ui){
},
search: function(e, ui){
$('#faq-search-results > ul').empty();
},
select: function(e, ui){
location.assign(ui.item.link);
}
}).data( "autocomplete" )._renderItem = function( ul, item ) {
return $("<li></li>")
.data("item.autocomplete", item)
.append('<a href="'+ item.link +'">'+ item.value +'</a>')
.appendTo($('#faq-search-results > ul'));
};