Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:未定义不是函数jquery自动完成_Javascript_Jquery_Jquery Ui_Autocomplete - Fatal编程技术网

Javascript 未捕获类型错误:未定义不是函数jquery自动完成

Javascript 未捕获类型错误:未定义不是函数jquery自动完成,javascript,jquery,jquery-ui,autocomplete,Javascript,Jquery,Jquery Ui,Autocomplete,我正在尝试使用jquery autocomplete组件。我想在autocomplete中显示图像。因此我必须编写_renderMenu和_renderItem函数。我编写了一个代码: var _filterUser = $('#filterUser').autocomplete({ source: onEditLoadUsers, select: onEditSelectUser,

我正在尝试使用jquery autocomplete组件。我想在autocomplete中显示图像。因此我必须编写_renderMenu和_renderItem函数。我编写了一个代码:

 var _filterUser = $('#filterUser').autocomplete({
                    source: onEditLoadUsers,
                    select: onEditSelectUser,
                    focus: onEditFocusUser
                }); 
 $('#filterUser').data("autocomplete")._renderItem= function( ul, item ){
    console.log('coming here');
    return $( "<li>" )
           .append( $( '<img src="'+item.photo+'" />' ) )
           .appendTo( ul );
 };
 $('#filterUser').data("autocomplete")._renderMenu= function(ul,items){
     var that = this;
     console.log('ul is')
     console.log(ul);
     console.log(items);
     $.each( items, function( index, item ) {
         that._renderItemData( ul, item );
     });                       
 };

我正在使用jquery 1.8.3和jquery UI 1.8。请指导如何解决此错误???

您不能以这种方式扩展对象

试着这样做:

(function ($, undefined) {
    var ac = $.ui.autocomplete.prototype;
    if (typeof $.uix !== "object") { $.uix = {}; }

    ac = $.extend({}, ac, {
        _renderItem: function (ul, item) {
            console.log('coming here');
            return $("<li>")
                .append($('<img src="' + item.photo + '" />'))
                .appendTo(ul);
        },
        _renderMenu: function (ul, items) {
            var that = this;
            console.log('ul is')
            console.log(ul);
            console.log(items);
            $.each(items, function (index, item) {
                that._renderItemData(ul, item);
            });
        }
    });

    $.uix.autocomplete = ac;
    $.widget("uix.autocomplete", $.uix.autocomplete);
})(jQuery);
(函数($,未定义){
var ac=$.ui.autocomplete.prototype;
if(typeof$.uix!=“object”){$.uix={};}
ac=$.extend({},ac{
_renderItem:功能(ul,项目){
console.log('coming here');
返回$(“
  • ”) .附加($('') .附录(ul); }, _renderMenu:功能(ul,项目){ var=这个; console.log('ul is') 控制台日志(ul); 控制台日志(项目); $。每个(项目、功能(索引、项目){ 即._renderItemData(ul,项目); }); } }); $.uix.autocomplete=ac; $.widget(“uix.autocomplete”,$.uix.autocomplete); })(jQuery);
  • 这一点。_renderItemData(ul,项目);你是指_renderItem(ul,item)吗?不,我是指_renderItemData,正如你在我复制粘贴的代码中所看到的。我想在_renderMenu中必须使用_renderItemData。
    (function ($, undefined) {
        var ac = $.ui.autocomplete.prototype;
        if (typeof $.uix !== "object") { $.uix = {}; }
    
        ac = $.extend({}, ac, {
            _renderItem: function (ul, item) {
                console.log('coming here');
                return $("<li>")
                    .append($('<img src="' + item.photo + '" />'))
                    .appendTo(ul);
            },
            _renderMenu: function (ul, items) {
                var that = this;
                console.log('ul is')
                console.log(ul);
                console.log(items);
                $.each(items, function (index, item) {
                    that._renderItemData(ul, item);
                });
            }
        });
    
        $.uix.autocomplete = ac;
        $.widget("uix.autocomplete", $.uix.autocomplete);
    })(jQuery);