覆盖_renderItem和_renderMenu

如何仅为#global-search覆盖_renderItem?

 $("#global-search").autocomplete({ // })._renderMenu = function(ul, items) { var self = this; ul.append('
'); $.each( items, function( index, item ) { self._renderItem( ul.find("table"), item ); }); });

请记住,您可以通过data jQuery UI工厂方法( _create )创建的窗口小部件的特定实例:

 var widgetInst = $("#global-search").autocomplete({}).data('ui-autocomplete'); 

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

 var widgetInst = $("#global-search").autocomplete('instance'); 

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

 widgetInst._renderMenu = function(ul, items) { var self = this; ul.append('
'); $.each( items, function( index, item ) { self._renderItem( ul.find("table"), item ); }); };

你有几个选择:

  1. 您可以覆盖_renderItem函数,以便它在内部进行一些对象比较,并调用原始的_renderItem函数或执行自定义代码。

  2. 您可以创建一个inheritanceautocomplete的新窗口小部件,并覆盖其中的function。