リモート データ ソースで Bloodhound 提案エンジンを使用する typeahead.js プラグインを初期化する JQuery コードを DRY しようとしています。これまでのコードは次のとおりです。
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({ ... })
、プラグインはこれらすべてのコントロールに対して初期化されます。私が直面している問題はajax
、Bloodhound 構成のコールバック関数 ( beforeSend
、complete
など) にあります。これらの関数内のテキスト フィールドの "loading.gif" クラスを切り替えています。参照を取得するにはそのコードが必要です。呼び出しオブジェクトに。
これらのコールバック内の呼び出しテキスト フィールドへの参照を取得するにはどうすればよいですか? 私はこのようなものが必要です:
$(<text-field reference>).addClass('loading-text');
誰かが私を助けてくれることを願っています。前もって感謝します!
編集- 今のところ、問題を解決する次のコードを使用していますが、呼び出し元のオブジェクト参照(この件名) の取得に関する質問はまだ保留中です。
if ($(document.activeElement).typeahead != null) {
$(document.activeElement).addClass('loading-text');
}