jquery ui autocomplete _renderItem 似乎干扰 select 事件

标签 jquery jquery-ui select autocomplete jquery-ui-autocomplete

如果我使用 _renderItem,我的选择事件将不起作用。如果我注释掉调用 _renderItem 的最后一个代码块,则 select 事件将起作用。当我使用 _renderItem 时,选择事件根本不会触发。

var cache = {}, lastXhr; 

$("#hifind-find").autocomplete({
  source: function(request, response) {

    var term = request.term; 
    if (term in cache) {
      response(cache[term]);
      return;
    }

    var posturl = '/hifind/jquery_ui/autocomplete/'+term; 
    lastXhr = $.post(posturl, function(data, status, xhr) {
      cache[term] = data; 
      if (xhr === lastXhr) {
        response(data); 
      } 
    }, 'json');
  },
  delay: 300,
  minLength: 1,
  select: function(event, ui){
    window.location = ui.item.dest;
  }
});

$.ui.autocomplete.prototype._renderItem = function(ul, item) {
  return $("<li></li>")
    .data("item.autocomplete", item)
    .append('<img src="' + iconImgPath + item.flag + '-search.png" class="icon-autocomplete-bundle">' + item.label )
    .appendTo( ul );
};

如果我做类似的事情,我会得到相同的结果...

$("#hifind-find").autocomplete(myConfig).data("autocomplete")._renderItem = renderItemFunction;

无论哪种方式,选择都不会触发。 _renderItem 做了它应该做的事情。它修改了项目并且没有错误,但似乎破坏了选择。

最佳答案

相信这是因为您没有将项目包装在 anchor (a) 标签中。更新您的代码以将 img 包装在 anchor 中,它将正常工作:

$.ui.autocomplete.prototype._renderItem = function(ul, item) {
  return $("<li></li>")
    .data("item.autocomplete", item)
    .append('<a><img src="' + iconImgPath + item.flag + '-search.png" class="icon-autocomplete-bundle">' + item.label + '</a>')
    .appendTo( ul );
};

以下是一些可能有帮助的示例:

关于jquery ui autocomplete _renderItem 似乎干扰 select 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10900401/

相关文章:

javascript - 我如何监控 DOM 的变化?

javascript - 为什么这里没有触发 "input"事件?

mysql - 在 HAVING 子句中对列建立索引 - MySQL

mysql - SELECT语句,值用逗号分隔

javascript - Uncaught TypeError : $(. ..).tooltip is not a function 错误

sql-server-2008 - 如何在 SQL select 语句中用另一个字符串值替换指定的字符串值?

javascript - Draggable 不是拖动

jquery - 计算div宽度并插入透明div

javascript - 为什么我不能将背景更改为 'true' 或在 Bootstrap 中更改为 'static' 后将其删除?

jquery-ui - jqueryui - Draggable 在拖动到可排序时会丢失 id 属性