4

我在使用 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);
};

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

4

1 回答 1

1

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

于 2013-01-02T07:19:22.940 回答