3

_renderItem 関数を使用してカスタム ui-menu-item 要素を作成しようとしていますが、何度試しても関数を呼び出すことさえできません。オートコンプリートは機能していますが、_renderItem 関数がないようです。ここに私のスクリプトセクションがあります

<script language="Javascript" type="text/javascript">
    function split( val ) {
    return val.split( /,\s*/ );
} 
function extractLast( term ) {
    return split( term ).pop();
}

$j(document).ready(function() { //START of ready function
$j( "#custom-report" )
.autocomplete({
source: function( request, response ) {
$j.getJSON( "<?=$this->url(array("controller"=>"report", "action"=>"custom-autocomplete"))?>", {
term: extractLast( request.term )
}, response );
},

search: function() {
//Place holder
},

focus: function (event, ui) {
       // Prevent the default focus behavior.
       event.preventDefault();
},

select: function( event, ui ) {
var terms = split( this.value );
terms.pop();
terms.push( ui.item.value );
this.value = terms.join( ", " );
return false;
}
}).data("autocomplete")._renderItem = function (ul, item) {
        return $("<li />")
            .data("item.autocomplete", item)
            .append("This is the text")
            .addClass("tip")
            .attr("desc", "This is the description")
            .appendTo(ul);
    };
}); //END of ready function
</script>

なぜこれが機能しないのか、誰にも分かりますか?

4

2 に答える 2

3

jQuery UI のバージョンによって異なります。新しいバージョンではオブジェクト モデルが変更されています ( http://jqueryui.com/upgrade-guide/1.10/#autocompleteを参照)。

jQuery UI サイトの例は、jQuery UI 1.10 に基づいています。

1.9 およびマイナー:

.data("autocomplete")._renderItem = function (ul, item) {
        return $("<li />")
            .data("item.autocomplete", item)
            .append("This is the text")
            .addClass("tip")
            .attr("desc", "This is the description")
            .appendTo(ul);
    };

1.10 以降:

.data("ui-autocomplete")._renderItem = function (ul, item) {
        return $("<li />")
            .data("ui-autocomplete-item", item)
            .append("This is the text")
            .addClass("tip")
            .attr("desc", "This is the description")
            .appendTo(ul);
    };
于 2013-08-18T10:08:43.400 に答える