jQuery自动完成自定义_renderItem问题

时间:2012-04-12 12:45:17

标签: jquery jquery-ui debugging jquery-ui-autocomplete itemrenderers

我遇到了jQuery Autocomplete的问题。我正在定制它 显示两种项目:

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

后端完成所有工作;自动完成功能只需两个列表。

图片可以更好地解释:

http://shot.ninjaloot.se/20120412.141112.png(数据只是在开发时使用虚拟数据,并且样式尚未完成)

渲染工作时,选择(点击或其他) items会抛出一个难以调试的异常:

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);
};

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

1 个答案:

答案 0 :(得分:1)

  

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