The reason you're not getting _renderMenu to do anything is you're having it return a new <ul> but it needs to instead modify the <ul> that it receives as first argument.
Since you're only trying to complement the original behavior of _renderMenu, rather than reimplement it and _renderItem, you could proxy _renderMenu instead, like so:
- (function(){
- var proxied = $.ui.autocomplete.prototype._renderMenu;
- $.ui.autocomplete.prototype._renderMenu = function( ul, items ) {
- proxied.apply( this, [ul, items] );
- ul.after( "<a>powered by....</a>" );
- }
- }());
This works but reveals the next issue you'll need to tackle, the autocomplete menu is a <ul> added to the end of the body with no wrapper div that could contain the <a>powered by...</a>. Meaning when the <a> is placed after it in the DOM, it's simply hanging out at the end of the body, not positioned like the menu <ul>. So you'll either need to wrap the menu so it can contain the <a> as a sibling of the <ul>, then position that div, or position the <a> relative to the <ul>. The jQuery UI .position() utility should help with either approach.