あなたはjQueryのUIの自動入力補完を使用しているとして、あなたは自動入力補完インスタンス上element
文書化されていないプロパティから要素を取得することができます:
source: function(request, response) {
if (this.element && this.element[0]) {
display("source triggered for #" + this.element[0].id);
}
}
Live example
this.element
jQueryのラッパーですオートコンプリータがアタッチされている要素のため、this.element[0]
は未処理のDOM要素です。
しかし、文書化されていない情報を使用することは常に危険です。ドットリリースの間に変更または離脱する可能性があります。 SadullahCeranが提案したクロージャーを使用する方が信頼性が高くなります。私は若干異なり、それを行うだろう:
$("#input1, #input2").each(function(){
var $element = $(this); // `element` is a jQuery wrapper around the element
$(element).autocomplete({
source:function(request, response) {
// get the options relevant to `element`
});
});
...あなたはid
値を使用してに頼っていないという理由だけで。しかしそれは小さな点です。そして、上記のように2つの関数オブジェクトを作成することになりますが、それはそれほど悪いことではありません。ある
$("#input1, #input2").each(function(){
var $element = $(this); // `element` is a jQuery wrapper around the element
$(element).autocomplete({
source:function(request, response) {
return getOptionsFor(element, request, response);
});
});
function getOptionsFor(element, request, response) {
// get the options for `element`
}
jqueryのオートコンプリートのプラグイン:そこに関わる多くのコードだと、あなたが(ほぼ確実ではない問題である)、メモリにそれの2つのコピーを持っていることについて心配している場合は、単に別の関数に関数呼び出しを持っていますあなたは使っていますか? – ustun
jquery ui autocompleteしかし、私はそれが問題ではないと思われます... – elvenbyte
@elvenbyte:それは多くの場合、答えは完全にオートコンプリートプラグインの実装に依存します。 –