我正在使用 jQuery UI 自动完成。
这很好,但是在同一页面上使用多个猴子修补解决方案来格式化结果存在多个自动完成框的问题(目前您只能覆盖原始 renderItem 允许每页使用一种结果格式)。
如何解决这个问题是自动完成小部件的一大未解之谜(据我所知)。我的想法是,如果我可以引用自动完成元素的 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 );
}
});
};
这应该启用多个配置的配置来格式化自动完成结果?
例如,通过配置 x 个自定义 _renderItem 函数,在 _renderMenu 中列出:
$.ui.autocomplete.prototype._renderItemCustom1: function( ul, item) {
return CUSTOMISE FORMATTING HERE;
};
所以我的问题是,如何在 _renderMenu 函数中引用位于链顶部的类或 ID(代码中的 $$$$CLASS-OR-ID$$$$)?
希望这是有道理的,感谢您的帮助!