2010-09-28 157 views
5

我使用_renderItem修改结果列表jQuery用户界面自动完成 - renderItem

.data("autocomplete")._renderItem = function(ul, item) { 
      var temp = item.url.substring(16, item.url.length) 
      return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append("<a>" + item.value + "<br>" + item.url + "<br>" + item.description + "<br>" + "Support URL: " + item.support_url + "<br>" + "Contact: " + "<a href=" + item.contact + ">Test</a>" + "<br />" + "</a>" ) 
      .appendTo(ul) 

这有自动标记任何东西,看起来像一个URL作为一个href行为。我想使整个项目的链接

在被这样做旧的自动完成:

.result(function(event, item) { 
    location.href = item.url; 
    }); 

但这并不缝支持任何更长的时间。

有谁知道我可以:

1)使用类似的。结果功能,只是使整个项目的链接

2)修改_renderItem所以它是不会自动将看起来像URL的字符串转换为href的字符串

谢谢。

+0

您可以在自动填充的打开事件中编写代码来更改已呈现项目的标记吗? – 2012-01-27 20:47:24

回答

3

当你定义自动完成,使用select函数来创建你的链接:

$('selector').autocomplete({ 
    source: ..., 
    select: function(event, ui) { window.location = ui.url; } 
}); 
10

看来,这在以前的版本已经改变。现在,你必须使用

$element.data('uiAutocomplete')._renderItem() 
+1

哦,非常感谢!遗憾的是[API文档](http://api.jqueryui.com/autocomplete)没有涉及 – 2013-03-18 13:38:20

+0

这可以工作,但当前记录的方法是通过扩展小部件来创建自己的自定义自动填充。请参阅下面的答案。 – 2014-06-22 10:20:57

3

一种更好的方法来定制jQuery的自动完成功能是创建自己的extended version using widgets

$.widget("custom.mySpecialAutocomplete", $.ui.autocomplete, { 
    // Add the item's value as a data attribute on the <li>. 
    _renderItem: function(ul, item) { 
    return $("<li>") 
     .attr("data-value", item.value) 
     .append($("<a>").text(item.label)) 
     .appendTo(ul); 
    }, 
    // Add a CSS class name to the odd menu items. 
    _renderMenu: function(ul, items) { 
    var that = this; 
    $.each(items, function(index, item) { 
     that._renderItemData(ul, item); 
    }); 
    $(ul).find("li:odd").addClass("odd"); 
    } 
}); 

var availableTags = [ 
    "ActionScript", 
    "AppleScript", 
    "Asp", 
    "BASIC", 
    "C", 
    "C++", 
    "Clojure", 
    "COBOL", 
    "ColdFusion", 
    "Erlang", 
    "Fortran", 
    "Groovy", 
    "Haskell", 
    "Java", 
    "JavaScript", 
    "Lisp", 
    "Perl", 
    "PHP", 
    "Python", 
    "Ruby", 
    "Scala", 
    "Scheme" 
]; 

$('#myElement').mySpecialAutocomplete({ 
    source: availableTags 
}); 
+0

“更好的方法” - 如何“只有方法有效”。我从互联网上发现的旧语法中尝试的一切都没有做任何事情。这个小部件扩展语法是唯一适用于我的。感谢分享。不幸的是,'_renderItem'的jQuery文档没有包含像这里给出的完整示例。 – Pistos 2014-08-06 14:59:59

相关问题