質問
入力ボックスが現在jQuery UIオートコンプリートかどうかを検出するにはどうすればよいですか?これにはネイティブな方法はないようですが、このような単純なものがあることを期待しています:
if ($("#q").autocomplete)
{
//Do something
}
ただし、条件付きでは常にtrueを返すようです。
解決
if ($("#q").hasClass("ac_input")) {
// do something
}
更新
JQuery UIオートコンプリートウィジェットのクラス名は 'ui-autocomplete-input'になったため、コードは次のようになります。
if ($("#q").hasClass("ui-autocomplete-input")) {
// do something
}
他のヒント
次のコード行により、入力要素に関連付けられたオートコンプリート動作を見つけることもできます。
if ($('Selector').data('autocomplete')) {
}
使用できます
if( $.isFunction( $.fn.autocomplete ) ){ }
.isFunctionはjQueryライブラリの一部です。 (引用: http://james.padolsey.com/jquery/。 ... isFunction )
ページにオートコンプリートjquery UIプラグインが既に含まれており、特定の(入力)要素がオートコンプリート機能で設定されているかどうかを確認する場合は、公式APIメソッド以下に示すように:
if ($("#q").autocomplete("instance")) {
console.log("autocomplete already setup for #q");
} else {
console.log("NO autocomplete for #q");
}
詳細については、 http://api.jqueryui.com/autocomplete/をご覧ください。 #method-instance
オートコンプリートjsを含めると、すべての$()オブジェクトにautocomplete()メソッドが定義されるようになりました(これらの要素のオートコンプリートを有効にしたい場合)。 if()は、その関数がnullではないことを言っているだけです。
残念ながら、これを確認できるシステムはありません(今日はラップトップを家に置いておきます)が、オートコンプリートは使用している要素にcssクラス名を追加すると考えています。探すことができます。