jQuery UI自动完成缺少_renderItem

时间:2015-03-13 09:39:15

标签: javascript jquery jquery-ui autocomplete jquery-autocomplete

这很奇怪。

$.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);
                    }
            };

});}

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

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

我想要做的是添加&#34;预选&#34;类自动完成下拉列表中的-li-项目。我坚持这个......

1 个答案:

答案 0 :(得分:1)

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

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