gpt4 book ai didi

javascript - 旧版本 jQueryUI AutoComplete 控件中的类别

转载 作者:行者123 更新时间:2023-12-03 08:53:35 26 4
gpt4 key购买 nike

我被困在 jQuery 1.7 和 jQueryUI 1.8.6 上,目前无法升级(我们有相当多已弃用和删除的代码,目前无法升级)。

我可以使用jQueryUI's AutoComplete control ,但我无法弄清楚如何使用类别 - 使用示例 found here .

$.widget( "custom.catcomplete", $.ui.autocomplete, {
_create: function() {
this._super();
this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
},
_renderMenu: function( ul, items ) {
var that = this,
currentCategory = "";
$.each( items, function( index, item ) {
var li;
if ( item.category != currentCategory ) {
ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
currentCategory = item.category;
}
li = that._renderItemData( ul, item );
if ( item.category ) {
li.attr( "aria-label", item.category + " : " + item.label );
}
});
}
});

我收到错误:this._super 不是一个函数,如果我删除该行,则以下行在调用 widget() 时会失败,并显示 无法读取未定义的属性“元素”

我知道 jQuery 插件的语法在版本之间发生了变化,但我似乎无法修改他们的示例,以便它可以与旧版本一起使用。 This question在 1.7 中暗示了稍微不同的语法,但当我摆弄它时,我只是不断收到不同的错误。

知道我需要更改什么才能使其正常工作吗?

最佳答案

_super 方法是在较新版本的 jQuery UI 中创建的,在以前的版本中不存在。作为解决方法,您可以调用 $.ui.autocomplete.prototype._create.call(this); ,其基本上与 _super 的作用相同。

<小时/>

一旦 _renderItemData 也没有退出,您必须通过将其更改为 _renderItem 然后调用 .data( "ui-自动完成项目”,项目);

您更改的完整代码将是:

$.widget("custom.catcomplete", $.ui.autocomplete, {
_create: function () {
$.ui.autocomplete.prototype._create.call(this);
this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
},
_renderMenu: function (ul, items) {
var that = this,
currentCategory = "";
$.each(items, function (index, item) {
var li;
if (item.category != currentCategory) {
ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
currentCategory = item.category;
}
li = that._renderItem(ul, item).data('ui-autocomplete-item', item);
if (item.category) {
li.attr("aria-label", item.category + " : " + item.label);
}
});
}
});

fiddle 工作:http://jsfiddle.net/qjw165sz/1/

关于javascript - 旧版本 jQueryUI AutoComplete 控件中的类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com