Поскольку вы используете автозаполнение пользовательского интерфейса jQuery, вы можете получить элемент из недокументированного свойства element
в экземпляре автозаполнения:
source: function(request, response) {
if (this.element && this.element[0]) {
display("source triggered for #" + this.element[0].id);
}
}
Живой пример
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
. Но это маленький вопрос. И да, приведенное выше в конечном итоге создает два функциональных объекта, но это не так уж плохо. Если задействовано много кода, и вы беспокоитесь о наличии двух его копий в памяти (что почти наверняка не проблема), просто вызовите функцию в другую функцию:
$("#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`
}