覆盖_renderItem和_renderMenu

el_*_*_le 4 javascript jquery jquery-ui

我怎样才能覆盖_renderItem #global-search

$("#global-search").autocomplete({
   //       
})._renderMenu = function(ul, items) {
   var self = this;
   ul.append('<table class="ac-search-table"></table>');
   $.each( items, function( index, item ) {
     self._renderItem( ul.find("table"), item );
   });
});
Run Code Online (Sandbox Code Playgroud)

rai*_*7ow 13

请记住,您可以通过以下方式处理由jQuery UI factory method(_create)创建的窗口小部件的特定实例data:

var widgetInst = $("#global-search").autocomplete({}).data('ui-autocomplete');
Run Code Online (Sandbox Code Playgroud)

...或者,从jQuery UI 1.12开始,通过instance()辅助方法:

var widgetInst = $("#global-search").autocomplete('instance'); 
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用自己的方法覆盖其方法:

widgetInst._renderMenu = function(ul, items) {
  var self = this;
  ul.append('<table class="ac-search-table"></table>');
  $.each( items, function( index, item ) {
    self._renderItem( ul.find("table"), item );
  });
};
Run Code Online (Sandbox Code Playgroud)