我从 bootstrap 获得了这段代码:link。
显然它使用 nextall() 从 typeahead 创建了 2 种下拉列表,但我不明白如何实现它。我是否需要更改引导预输入文件中的某些内容?
链接中的文本:公开的 typeahead 渲染方法,因此您可以覆盖它并根据从自定义源返回的对象类型自定义列表 html。如果你想产生类似新的 twitter 搜索/自动完成的东西,你需要这个。将 .next() 更改为使用 .nextAll(':has(a):first') 以便您可以分离结果类型。例子
var labels
, mapped
$("input").typeahead({
source: function (query, process) {
$.get('/autocomplete', { q: query }, function (data) {
labels = []
mapped = {}
$.each(data, function (i, item) {
mapped[item.label] = item.value
labels.push(item.label)
})
process(labels)
})
},
render: function () {
var that = this
items = $(mapped).map(function (i, item) {
i = $(that.options.item).attr('data-value', item)
if (item.thumb) { // Ok object has a thumbnail.
i.find('a').append(''+that.highlighter(item));
} else {
i.find('a').html(that.highlighter(item))
}
return i[0]
})
items.first().addClass('active')
this.$menu.html(items)
},
updater: function (item) {
return mapped[item]
}
})