我在使用 jQuery 自动完成时遇到问题。我正在对其进行自定义以显示两种项目:
- 与搜索字符串的实际匹配和
- 建议(拼写更正、相关关键字等)
后端完成所有工作;自动完成只是提供了两个列表。
一张图可以更好的解释:
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);
};
如果需要更多代码,我很乐意提供!