为什么我收到这个JS错误?

Jus*_*zer 8 javascript debugging jquery autocomplete

我得到这个JS错误:

jquery-1.5.1.min.js:16Uncaught TypeError: Cannot set property '_renderItem' of undefined
d.d.extend._Deferred.f.resolveWithjquery-1.5.1.min.js:16
d.d.extend.readyjquery-1.5.1.min.js:16
d.c.addEventListener.A
Run Code Online (Sandbox Code Playgroud)

它来自我的application.js文件中的jquery UI自动完成插件的代码:

    .data( "autocomplete" )._renderItem = function( ul, item ) {
         return $( "<li></li>" )
           .data( "item.autocomplete", item )
           .append( "<a>" + item.topic.name + "</a>" )
           .appendTo( ul );
            };
Run Code Online (Sandbox Code Playgroud)

每当我加载一个没有自动完成代码所依据的文本字段的页面时,我都会收到此代码.为什么以及如何摆脱这个错误?

我想请注意,虽然我收到此错误,但我的应用程序正常运行.我是否应该担心这个错误?

Mar*_*ahn 10

$(...).data('autocomplete')
Run Code Online (Sandbox Code Playgroud)

未定义,您不能设置undefined属性.尝试:

var obj = $(...).data('autocomplete');
obj && (obj._renderItem = function(){
   ...
});
Run Code Online (Sandbox Code Playgroud)

  • @Blender,因为jQuery选择器返回一个空数组.这个空数组没有.data()函数,所以.data函数返回undefined,你不能设置undefined属性,正如cwolves所解释的那样. (2认同)

al0*_*00y 9

当我将jquery ui从旧版升级到1.10.0时,这个问题出现了

只是改变

$('.foo').data("autocomplete")._render...;
Run Code Online (Sandbox Code Playgroud)

$('.foo').data("uiAutocomplete")._render...;
Run Code Online (Sandbox Code Playgroud)

JQueryUI 1.10.0自动完成renderItem问题