【问题标题】:Item added to jquery autocomplete list can't be highlighted or selected添加到 jquery 自动完成列表的项目无法突出显示或选择
【发布时间】:2014-09-25 10:47:18
【问题描述】:

我正在使用以下代码将“其他”项添加到自动完成列表中:

    open: function(event, ui) {
        $('.ui-autocomplete').append('<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all" tabindex="-1"><strong>Other</strong></a></li>');
    },

“其他”项出现在每个列表的末尾,作为对用户键入内容的响应,但是当鼠标移到该项目上时,该项目不会突出显示,并且在单击时不会被选中。我需要做些什么来确保它突出显示并且可以在单击时被选中?

我正在使用 Firebug 将代码跟随到我的选择函数中,如下所示:

    select: function( event, ui ) {
        if (ui.item) {
            var value = ui.item.type + ui.item.id;
            var name = ui.item.acronym;
            addContent(value, name);
            event.preventDefault();
            $(this).val('');
        }
    },

当我单击“其他”以外的任何项目时,选择功能会正确执行,并且单击的项目会得到正确处理。但是当我单击“其他”项时,我在第 322 行的 jQuery UI 1.8.14min.js 中收到错误消息“f.item”为空。

所以除了通过 open 函数添加 li 元素之外,我还需要添加一个对象到映射到 li 的东西上。我该怎么做呢?

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 是什么让项目突出显示?
  • 我真的不知道自动完成小部件在内部是如何工作的,但是当您将鼠标拖到项目上时,自动完成下拉列表中的项目会突出显示。
  • 你能看到悬停时是否添加了一个类吗?这是一个自动完成插件吗?

标签: jquery autocomplete selection


【解决方案1】:

这个 JSFiddle 显示它工作得很好:The Fiddle

是否有可能在运行时有其他一些 div / DOM 对象与它重叠?

var test = function() {   
    
        $('.ui-autocomplete').append('<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all" tabindex="-1"><strong>Other</strong></a></li>');
    
}

test();

【讨论】:

  • 是的,它确实将 li 元素“Other”放在每个下拉列表的末尾,但是一旦出现,将鼠标拖到它上面不会使其突出显示并在鼠标悬停时单击该项目超过它不会选择它。
  • @FredLittle,您使用的是什么浏览器?我在 Windows 上的 Chrome 中,我可以很好地突出显示和选择它。
猜你喜欢
  • 2011-09-19
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多