1

我正在使用带有自动完成工具的 jQueryUI (1.10.2) 和 jQuery (1.9.1)。

我有远程 json 数据和类别以及自定义显示,其中包含 json 数据中每个项目的图像(显示在自动完成列表中)。

这是我的自动完成初始化

var autoSearch = $("#header-search-text").autocomplete({
    source: function( request, response ) {
        $.ajax({
            //I have items with label, value, category and imgPath info
        });
    },
     focus: function( event, ui ) {
        console.log("focus is ");
        //This line shows "null"
        console.log(ui);
        return false;
    },
    minLength: 4,
    select: function( event, ui ) {
        //Never shows up
        console.log("selected is ");
        console.log( ui.item);/* ?
        "Selected: " + ui.item.label :
        "Nothing selected, input was " + this.value);*/
    },
    open: function() {
        $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
    },
    close: function() {
        $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
    }
}).data('ui-autocomplete');

我有一个自定义的 _renderMenu

//Working
autoSearch._renderMenu = function( ul, items ) {
        var that = this,
        currentCategory = "";
        $.each( items, function( index, item ) {
            console.log(item);
            if ( item.category != currentCategory ) {
                ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
                currentCategory = item.category;
            }
            that._renderItem( ul, item );
        });
};

但是当我有 _renderItem 时,用于选择的键(向上和向下)不再起作用,我无法点击任何东西(没有:悬停 CSS 出现)

autoSearch._renderItem = function(ul, item) {
    console.log("ul is ");
    console.log(ul);
    return $('<li>')
        .data('item.autocomplete', item)
        .append('<img style="width:50px;height:50px;" src="' + base_url + "/"+ item.imgPath + '" alt="" />' + item.label)
        .appendTo(ul);
};
4

1 回答 1

1

好的,我检查了 HTML,我显然在 _renderItem 中缺少这一行:

 //Before the appendTo(ul);
.append( $( "<a>" ).text( item.label ) )

我不知道为什么也不知道如何,但是通过添加 ,jQuery 会生成一堆属性,例如

id="ui-id-7" class="ui-corner-all" tabindex="-1"
于 2013-03-19T10:32:11.660 回答