4

我遇到了jQuery自动完成问题。我是定制,以 显示了两个类型的项目:jQuery自动完成自定义_renderItem问题

  • 实际匹配的搜索字符串和
  • 建议(拼写更正,相关的关键字等)

后端做所有的工作就此而言;自动完成只是提供两个列表。

图片可以更好地解释:

http://shot.ninjaloot.se/20120412.141112.png(该数据仅仅是虚拟而开发的数据使用,并且造型尚未完成)

虽然呈现作品,选择(点击或以其他方式)的在 项目抛出一个异常,这是很难调试:

TypeError: 'undefined' is not an object (evaluating 'ui.item.data') 

据我了解,在menu.selected功能被赋予了ui参数 有一个未定义的item密钥。

为什么会发生这种情况,我该怎么办?如果我注释掉我的自定义渲染器 ,选择工作。

这是我的自定义渲染器功能。它已经逐步从 UI源文件中提取,然后扩展以执行我的自定义haxing。

$input.data("autocomplete")._renderItem = function(ul, item) { 
    var cls = 'ui-menu-item'; 

    if(item.label === null) { 
     cls += ' center disabled'; 
     item.label = '-- perhaps thou meaneth --'; 
    } 

    return $("<li></li>") 
    .data("item.autocomplete", item) 
    .append("<a class='ui-corner-all'>" + item.label + "</a>") 
    .addClass(cls) 
    .appendTo(ul); 
}; 

如果需要更多的代码,我很乐意提供它!

+0

你能显示一个代码块吗?我们有同样的问题。 – chrisvillanueva 2012-08-16 18:13:09

+0

与底部示例相同,但第二行仅为“var cls ='';”而不是用ui-menu-item定义它。 – 2012-08-23 15:54:21

+1

您应该将您的解决方案作为实际答案发布,而不是编辑您的问题。 – lifo 2012-12-13 14:14:35

回答

1

自我解答!我自己设法解决了这个问题。出乎意料的是,如果手动添加类“ui-menu-item”,则菜单项被视为已完成,并且不会进行任何后处理,后处理对于该功能至关重要。如果我不手动添加这个类,它就可以工作。