我试图干掉一些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
回调函数(beforeSend
,complete
等):我正在切换" loading.gif"这些函数中的文本字段的类,我需要该代码来获取对调用对象的引用。
如何在这些回调中获得对调用文本字段的引用?我需要这样的东西:
$(<text-field reference>).addClass('loading-text');
我希望有人可以帮助我。提前谢谢!
编辑 - 现在我使用以下代码以某种方式解决了我的问题,但是关于获取调用对象引用的问题(这个主题)仍然悬而未决。
if ($(document.activeElement).typeahead != null) {
$(document.activeElement).addClass('loading-text');
}