jQuery UI 自动完成缺少 _renderItem

jQuery UI autocomplete missing _renderItem

这很奇怪。

$.fn.autoList = function () {

return this.each(function () {

    var self = this;

    // initiate autocomplete
    $(self).autocomplete({
        source: _li_data,
        minLength: 2,
        select: function (event, ui) {
            ui.item.checkbox.prop('checked', true).trigger('change');
            ui.item.checked = !ui.item.checked;
            $(event.target).val('');
            return false;
        }
    })
    .data('autocomplete')._renderItem = function (ul, item) {
                    if (item.checked) {
                        return $("<li>")
                                .text(item.label)
                                .addClass('preselected')
                                .appendTo(ul);
                    }
            };

});}

在输入时和结果应该呈现之前,我收到以下错误。 Uncaught TypeError: Cannot read property 'data' of undefined in jquery-ui-1.9.0.js:6672 其中有以下代码

    _renderItemData: function( ul, item ) {
    return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
},

我想做的是将 "preselected" class 添加到自动完成下拉列表的 -ul- 中的 -li- 项。我被这个困住了...

如果 (item.checked) 条件为假,_renderItem 函数将 return undefined。它可能只需要一个 else 块:

// ...
._renderItem = function (ul, item) {
                if (item.checked) {
                    return $("<li>")
                            .text(item.label)
                            .addClass('preselected')
                            .appendTo(ul);
                }
                // else
                return $("<li>").appendTo(ul);
        };