jQueryUIオートコンプリートを使用しています。
すばらしいですが、同じページに複数のオートコンプリートボックスがあり、結果をフォーマットするための複数のモンキーパッチソリューションがあります(現在、元のrenderItemのみを上書きして、ページごとに1つの結果フォーマットを許可できます)。
この問題を解決する方法は、オートコンプリートウィジェットの(私が見つけることができるように)未解決の大きな謎の1つです。オートコンプリート要素のIDを参照できる場合は、モンキーパッチにifステートメントを追加して、複数のインスタンスを作成できると考えていました。実演させてください:
結果をフォーマットするためのモンキーパッチは次のとおりです。
$.ui.autocomplete.prototype._renderItem: function( ul, item) {
return CUSTOMISE FORMATTING HERE;
};
同じページで指定する場合は、次のように言います。
$( "#input1")。autocomplete();
$( "#input2")。autocomplete();
私は別々の機能を実現しようとしていて、_RenderMenuを使用することを考えていました。
$.ui.autocomplete.prototype._renderMenu: function( ul, items ) {
var self = this;
$.each( items, function( index, item ) {
self._renderItem( ul, item );
});
};
次のように変更します。
$.ui.autocomplete.prototype._renderMenu: function( ul, items ) {
var self = this;
$.each( items, function( index, item ) {
if ( $$$$CLASS-OR-ID$$$$ == '#input1' ) {
self._renderItemCustom1( ul, item );
}
else if ( $$$$CLASS-OR-ID$$$$ == '#input2' ) {
self._renderItemCustom2( ul, item );
}
else {
self._renderItem( ul, item );
}
});
};
これにより、複数の構成を構成してオートコンプリートの結果をフォーマットできるようになりますか?
たとえば、_renderMenu内にリストされているx個のカスタム_renderItem関数を構成します。
$.ui.autocomplete.prototype._renderItemCustom1: function( ul, item) {
return CUSTOMISE FORMATTING HERE;
};
だから私の質問は、_renderMenu関数内のチェーンの最上位にあるクラスまたはID(コードでは$$$$ CLASS-OR-ID $$$$)をどのように参照できるかということです。
これが理にかなっていることを願っています、あなたの助けに感謝します!