На этот вопрос был дан ответ для метода live(), но метод live() устарел с jQuery 1.7 и заменен методом .on(), и этот ответ не работает для on ().
Вот где на него уже был дан ответ: Связать автозаполнение пользовательского интерфейса jQuery с помощью .live()
Кто-нибудь знает, как сделать то же самоес on()?
Если вы измените синтаксис на что-то вроде
$(document).on("keydown.autocomplete",[selector],function(){...});
с
$([selector]).live("keydown.autocomplete",function(){...});
, это вроде как работает, но странным образом взаимодействует с внутренними событиями автозаполнения. С live(), если вы используете событие selectи получаете доступ к event.target, он дает вам идентификатор элемента ввода. Если вы используете on(), он дает вам идентификатор выпадающего меню «ui-active-menuitem». Что-то вроде этого:
$( ".selector" ).autocomplete({
select: function(event, ui) {
console.log(event.target.id);
}
});
Но - если вы используете событие "открыть", оно даст вам искомый id - просто не в нужное время (он мне нужен после того, как он выбран). На данный момент я использую обходной путь, заключающийся в захвате идентификатора элемента ввода в функции открытия события, сохранении его в скрытом поле, а затем доступе к нему в методе выбора, где он мне нужен.