0

我从 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]
  }
})
4

1 回答 1

0

要实现您链接的提交(它似乎已经从 Bootstrap 源中消失了),您可以下载gcoop 的 bootstrap-typeahead.js 修改版本并使用它而不是原始版本。
请注意,他的 fork 版本为 2.0.4,如果您使用较新的版本,可能会导致问题。

于 2012-10-26T16:39:27.743 回答