4

_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 );
   });
});
4

2 に答える 2

14

jQuery UI ファクトリ メソッド ( _create)によって作成されたウィジェットの特定のインスタンスは、次の方法でアドレス指定できることに注意してdataください。

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('<table class="ac-search-table"></table>');
  $.each( items, function( index, item ) {
    self._renderItem( ul.find("table"), item );
  });
};
于 2012-12-28T16:36:13.273 に答える
0

いくつかのオプションがあります。

  1. 関数をオーバーライドして、_renderItem内部でオブジェクト比較を行い、元の_renderItem関数を呼び出すか、カスタム コードを実行することができます。

  2. autocompleteそこにある関数を継承してオーバーライドする新しいウィジェットを作成できます。

于 2012-12-28T16:29:38.653 に答える