Typeahead.js + Bloodhound远程数据:如何获取调用对象引用?

时间:2014-07-02 05:12:43

标签: javascript jquery typeahead.js bloodhound

我试图干掉一些JQuery代码,该代码初始化了一个使用带有远程数据源的Bloodhound建议引擎的typeahead.js插件。这是到目前为止的代码:

var locsData = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace("name"),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  remote: {
    url: "/locations/search.json?q=%QUERY",
    ajax: {
      beforeSend: function(xhr, settings) {
        $("#typeahead1").addClass('loading-text');
      },
      complete: function(xhr, status) {
        $("#typeahead1").removeClass('loading-text');
      }
    }
  },
  limit: 100
});
locsData.initialize();

$("#typeahead1").typeahead({
  minLength: 3
}, {
  name: "locs",
  displayKey: "name",
  source: locsData.ttAdapter()
});

我试图将这段代码概括为一堆不同的文本字段;这应该不是问题:我可以使用$(".myClass").typeahead({ ... }),并为所有这些控件初始化插件。我面临的问题是Bloodhound配置中的ajax回调函数(beforeSendcomplete等):我正在切换" loading.gif"这些函数中的文本字段的类,我需要该代码来获取对调用对象的引用。

如何在这些回调中获得对调用文本字段的引用?我需要这样的东西:

$(<text-field reference>).addClass('loading-text');

我希望有人可以帮助我。提前谢谢!


编辑 - 现在我使用以下代码以某种方式解决了我的问题,但是关于获取调用对象引用的问题(这个主题)仍然悬而未决。

    if ($(document.activeElement).typeahead != null) {
      $(document.activeElement).addClass('loading-text');
    }

0 个答案:

没有答案