このコードは bootstrap: linkから入手しました。
どうやら nextall() を使って typeahead から 2 種類のドロップダウンリストを作成するようですが、これを実装する方法がわかりません。ブートストラップ typeahead ファイルで何かを変更する必要がありますか?
リンクからのテキスト: typeahead レンダリング メソッドを公開したので、それをオーバーライドして、カスタム ソースから返されたオブジェクトのタイプに基づいてリスト html をカスタマイズできます。これは、新しい Twitter 検索/オートコンプリートのようなものを作成する場合に必要です。.nextAll(':has(a):first') を使用するように .next() を変更して、結果の型を分離できるようにしました。例
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]
}
})